需要帮助使用 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 在类定义中为向量分配空间的主要内容,如果未能解决你的问题,请参考以下文章

Boost.Python:在类外定义构造函数

boost::variant:递归向量类型的奇怪行为

矢量的内存管理

如何定义 boost::any 运算符 ==

如何在 C++ 的主函数中为全局声明的 2d 向量分配大小?

在 TypeScript 中为具有类型变量的抽象类中的派生类分配泛型类型