我已经阅读了我能找到的关于这个主题的每个帖子,但是无法弄清楚我做错了什么。我无法成功初始化我的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)); ^ 任何帮助,将不胜感激。
答案 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));
,但更喜欢前者。