无法在我的C ++类

时间:2016-05-22 04:51:21

标签: c++ multidimensional-array vector

我已经阅读了我能找到的关于这个主题的每个帖子,但是无法弄清楚我做错了什么。我无法成功初始化我的2d向量,这是我班级的成员变量。头文件是:

class Beam2
    {
    private:
        /*The following unit vectors should never be accessed directly
        and are therefore private.*/
        std::vector<std::vector<double> > unitVectors;

    public:
    //constructor
    Beam2(
        Node * node1PtrInput, Node * node2PtrInput,
        double orientAngleInput);

我的cpp文件

Beam2::Beam2(
Node * node1PtrInput, Node * node2PtrInput, double orientAngleInput){
node1Ptr = node1PtrInput;
node2Ptr = node2PtrInput;
orientAngle = orientAngleInput;
unitVectors(3, std::vector<double>(3));
updateUnitVectors();

错误是:错误:无法匹配调用'(std :: vector&gt;)(int,std :: vector)'   unitVectors(3,std :: vector(3));                                        ^ 任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:4)

这是初始化类的正确方法:

Beam2::Beam2(Node * node1PtrInput, Node * node2PtrInput, double orientAngleInput) :
node1Ptr(node1PtrInput),
node2Ptr(node2PtrInput),
orientAngle(orientAngleInput),
unitVectors(3, std::vector<double>(3))
{
    updateUnitVectors(); // I believe this is function in the class
}

您也可以修改代码,只需将unitVectors(3, std::vector<double>(3));替换为unitVectors.resize(3, std::vector<double>(3));,但更喜欢前者。