我正在尝试在类定义中为boost矢量类型分配空间。我不是一个优秀的c ++程序员,但下面显示的是我最好的尝试。没有错误消息,但是当我尝试从主函数访问向量时,它认为向量具有零元素。我知道这是因为我没有告诉编译器当我在类定义中声明向量时要分配多少空间,但我不知道如何在没有出错的情况下执行此操作。我试图通过告诉它在构造函数中我想要它有多大来绕过这个,但我知道编译器将其视为重构定义,它不存在于构造函数范围之外。有人能引导我朝着正确的方向前进吗?提前谢谢。
namespace ublas = boost::numeric::ublas;
class Phase
{
ublas::vector<cdouble> lam;
public:
// Constructor:
Phase()
{
ublas::vector<cdouble> lam(2);
for(int i = 0; i < 2; i++)
{
lam(i) = 1.0;
}
}
// Destructor:
~Phase() {}
// Accessor Function:
ublas::vector<cdouble> get_lam() { return lam; }
};
答案 0 :(得分:7)
在构造函数中,您正在创建一个隐藏类变量lam
的局部变量lam
。您想在构造函数的初始化列表中初始化向量:
Phase() : lam(2)
{
for(int i = 0; i < 2; i++)
{
lam(i) = 1.0;
}
}
这会在初始化类时调用所需的vector
构造函数,而不是类的默认构造函数。