需要帮助使用 boost 在类定义中为向量分配空间
Posted
技术标签:
【中文标题】需要帮助使用 boost 在类定义中为向量分配空间【英文标题】:Need help allocating space for vector within class definition using boost 【发布时间】:2009-09-14 15:52:49 【问题描述】:我正在尝试为类定义中的提升向量类型分配空间。我不是一个好的 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;
;
【问题讨论】:
【参考方案1】:在您的构造函数中,您正在创建一个局部变量lam
,它会隐藏类变量lam
。你想在构造函数的初始化列表中初始化向量:
Phase() : lam(2)
for(int i = 0; i < 2; i++)
lam(i) = 1.0;
这会在初始化类时调用您想要的 vector
构造函数,而不是类的默认构造函数。
【讨论】:
以上是关于需要帮助使用 boost 在类定义中为向量分配空间的主要内容,如果未能解决你的问题,请参考以下文章