C++ - 循环访问指针数组会导致错误
C++ - iterating through array of pointers causes errors
所以我有两个类 - DVD和DvdGroup。DvdGroup 基本上管理一系列 DVD,并为该类提供操作成员函数。我正在努力弄清楚如何在C++中迭代一系列指针。基本上对于 DvdGroup 函数,它应该是执行 DVD 组深层复制的复制构造函数。其目的是调用 DVD 复制构造函数来创建每个 DVD 对象的副本。
但是,当我尝试这样做时,我收到许多错误
DvdGroup.cc: In copy constructor ‘DvdGroup::DvdGroup(DvdGroup&)’:
DvdGroup.cc:18:43: error: no matching function for call to ‘Dvd::Dvd(Dvd*&)’
Dvd newDvd(dvds.dvdCollection[i]);
In file included from DvdGroup.h:5:0,
from DvdGroup.cc:5:
Dvd.h:10:5: note: candidate: Dvd::Dvd(Dvd&)
Dvd(Dvd&);
^~~~~
Dvd.h:10:5: note: no known conversion for argument 1 from ‘Dvd*’ to ‘Dvd&’
Dvd.h:8:5: note: candidate: Dvd::Dvd(std::__cxx11::string, int)
Dvd(string, int);
^~~~~
Dvd.h:8:5: note: candidate expects 2 arguments, 1 provided
DvdGroup.cc:19:24: error: cannot convert ‘Dvd’ to ‘Dvd*’ in assignment
dvdCollection[i] = newDvd;
我的 for 循环应该做一个非常简单的任务,但我无法弄清楚我做错了什么。我想知道是否有人可以提供帮助。
DvdGroup.cc 文件:
DvdGroup::DvdGroup(DvdGroup& dvds){
numDvds = dvds.numDvds;
for(int i = 0; i < numDvds; ++i){
Dvd newDvd(dvds.dvdCollection[i]);
dvdCollection[i] = newDvd;
}
}
DvdGroup.h:
#ifndef DVDGROUP_H
#define DVDGROUP_H
#define MAX_DVDS 15
#include <string>
using namespace std;
class DvdGroup
{
public:
DvdGroup(int);
DvdGroup(DvdGroup&);
~DvdGroup();
void add(Dvd*);
private:
Dvd* dvdCollection[MAX_DVDS];
int numDvds;
};
#endif
Dvd.cc 文件中的复制构造函数:
Dvd::Dvd(Dvd& dvd){
title = dvd.title;
year = dvd.year;
}
我假设DVD收藏拥有DVD,在这种情况下,您需要通过新副本制作新副本,例如
DvdGroup::DvdGroup(DvdGroup& dvds){
numDvds = dvds.numDvds;
for(int i = 0; i < numDvds; ++i){
dvdCollection[i] = new Dvd(*dvds.dvdCollection[i]);
}
}
相关文章:
- "错误:数组下标的无效类型'float [10001][float]'是什么意思?
- 错误:数组下标的类型"const bool[int]"无效
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 使用GCC 4.8构建错误:数组用作初始化器
- 如何修复问题中的"teminated due to timeout"错误 数组操作 |黑客兰克?
- | 9 |错误:非静态数据成员'matrix :: row'| 9 |错误:数组绑定不是在']']'令牌|之前的整数常数
- 错误:数组的总大小不得超过0x7fffffff字节
- 错误:无法将参数“1”的“double*”转换为“double”,错误:数组下标的类型“double[double]”无
- 返回并强制转换数组指针(错误:数组下标的类型..无效)
- 返回c++中的字符错误数组
- VC++错误:数组实例化的大小来自模板化的静态常量
- c++mex错误:数组下标的类型“double[mwSize]”无效
- 错误数组用作初始值设定项,我不知道错误
- 编译错误 - 数组下标'char[int]'的类型无效
- 向量在我的类中.错误:数组new [-fpermissive]中的圆括号初始化项
- 错误:数组下标的类型无效
- 错误:数组new中的size必须是整型[-fpermissive]
- 错误:数组下标的“Pixel*[__complex__ int]”类型无效
- c++错误数组显示
- C++:错误:数组下标的类型“size_t{aka long unsigned int}[size_t{aka long