【发布时间】:2019-07-05 13:13:40
【问题描述】:
我想创建一个具有数组和数组大小的构造函数,这样我就可以使用这个来调用对象:Multime m1 = Multime({1, 2, 3}, 3);
或者我应该使用 std::vector 代替吗?
class Multime
{
private:
int elemente[100];
int size;
public:
Multime(){}
Multime(int el[50], int s){
this -> size = s;
for(int i = 0; i < this -> size; i++)
this -> elemente[i] = el[i];
}
};
int main()
{
Multime m1 = Multime({1, 2, 3}, 3);
return 0;
}
我得到没有匹配的构造函数用于初始化'Multime'
【问题讨论】:
-
elemente 是否应该始终包含 100 个元素?
-
使用
std::vector或std::initializer_list作为参数怎么样? -
您确定
{1, 2, 3}计算结果为整数数组吗? -
您不能将数组作为参数传递。有关更多信息,请参阅 C++ 书中解释函数参数类型如何衰减的章节。在 C++11 后的词中,您可以声明
std::initializer_list参数并避免需要传递显式数组大小参数,这将起作用;但这是一个相当高级的主题,有关详细信息,请参阅您的 C++ 书籍。 -
顺便说一句,如前所述,您不能将 C 样式的数组作为参数简单地传递。就像在 C 中一样,像
int el[](大小无关)这样的参数声明将被视为int* el,换句话说,该函数需要一个指针作为参数。您的编译器应该在完整的错误消息中提到它(尽管它可能有点间接)。
标签: c++ class oop constructor