我想创建一个C ++类,它以“vector”int t [9]作为参数。我不明白为什么我的代码不起作用:
以下是标题的内容:
class Matrice3x3{
public:
int n;
int t[9];
Matrice3x3 inverse();
float det();
void print();
Matrice3x3(int u = 3);
Matrice3x3(int p[9], int m = 9);
private:
};
这里是班级描述的内容:
Matrice3x3::Matrice3x3(int u) {
n = u*u;
}
Matrice3x3::Matrice3x3(int p[9] , int m){
n = m;
t = p;
}
我得到了这个错误:
In constructor 'Matrice3x3::Matrice3x3(int*, int)':
incompatible types in assignment of 'int*' to 'int [9]'
t = p;
^
我只是看不到我说的其中一个[]是指针......
感谢您的回答!
答案 0 :(得分:3)
您无法像这样复制数组。您应该逐个元素地复制它们或使用memcpy。 在一般情况下,最好使用容器的标准库(在这种情况下为std :: vector)。您应该有充分的理由选择C风格的数组到标准容器。
答案 1 :(得分:2)
好吧,如果你真的想要固定大小的数组,请使用C ++ 11的std :: array<> (对于前C ++ 11,Boost也有一个定义)。您可以将其分配为std :: array< int,9>然后将其作为对象传递。您还可以使用size()成员函数来获取元素的数量(虽然它在类型中是硬编码的),并且它具有其他成员函数(例如begin()和end()),这使得它看起来像一个std容器,所以你也可以使用std的算法。基本上,是一个固定大小的数组的包装器。当然你可以通过参考值传递。