我正在尝试使用MTL编写一个小程序,但是当我尝试使MTL Matrix成为一个类的成员时,我收到了上述错误。
#include <boost/numeric/mtl/mtl.hpp>
class myClass
{
private:
mtl::dense2D<double> Ke(6,6);
};
但是,main()中的相同语句没有问题:
#include <boost/numeric/mtl/mtl.hpp>
int main(int argc, char** argv)
{
mtl::dense2D<double> Ke(6,6);
return 0;
}
我对C ++很陌生,我不认为这与MTL有关,但这就是我发生错误的地方。
答案 0 :(得分:6)
您需要在构造函数初始化列表中执行此操作。
class myClass {
mtl::dense2D<double> Ke;
public:
myClass() : Ke(mtl::dense2D<double>(6, 6)) { }
};
答案 1 :(得分:4)
因为当你宣布
时mtl::dense2D<double> Ke;
你只应该声明它,而不是创建它。这是构造函数在C ++中的工作:
class myClass
{
public:
myClass() // constructor
: Ke(6, 6) // here we use the constructor initializer
{
}
private:
mtl::dense2D<double> Ke; // declaration
};
答案 2 :(得分:3)
您无法在类范围内初始化变量,您需要在构造函数中执行此操作。改变这个:
class myClass
{
private:
mtl::dense2D<double> Ke(6,6);
};
到此 -
class myClass
{
public:
myClass() : Ke(6,6) { }
private:
mtl::dense2D<double> Ke;
};