【问题标题】:Need help allocating space for vector within class definition using boost需要帮助使用 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; }
};

【问题讨论】:

    标签: c++ boost vector


    【解决方案1】:

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

    Phase() : lam(2)
    {
     for(int i = 0; i < 2; i++)
     {
      lam(i) = 1.0;
     }
    }
    

    这会在初始化类时调用您想要的 vector 构造函数,而不是类的默认构造函数。

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多