c ++类中的向量参数

时间:2014-01-05 15:10:07

标签: c++ class vector

我想创建一个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;
  ^

我只是看不到我说的其中一个[]是指针......

感谢您的回答!

2 个答案:

答案 0 :(得分:3)

您无法像这样复制数组。您应该逐个元素地复制它们或使用memcpy。 在一般情况下,最好使用容器的标准库(在这种情况下为std :: vector)。您应该有充分的理由选择C风格的数组到标准容器。

答案 1 :(得分:2)

好吧,如果你真的想要固定大小的数组,请使用C ++ 11的std :: array<> (对于前C ++ 11,Boost也有一个定义)。您可以将其分配为std :: array< int,9>然后将其作为对象传递。您还可以使用size()成员函数来获取元素的数量(虽然它在类型中是硬编码的),并且它具有其他成员函数(例如begin()和end()),这使得它看起来像一个std容器,所以你也可以使用std的算法。基本上,是一个固定大小的数组的包装器。当然你可以通过参考值传递。