需要帮助使用boost为类定义中的向量分配空间

ban*_*edo 1 c++ boost vector

我试图在类定义中为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; }
};
Run Code Online (Sandbox Code Playgroud)

Com*_*ger 7

在构造函数中,您将创建一个lam隐藏类变量的局部变量lam.您想在构造函数的初始化列表中初始化向量:

Phase() : lam(2)
{
 for(int i = 0; i < 2; i++)
 {
  lam(i) = 1.0;
 }
}
Run Code Online (Sandbox Code Playgroud)

vector会在初始化类时调用所需的构造函数,而不是类的默认构造函数.