【发布时间】:2014-07-07 10:26:15
【问题描述】:
我正在尝试使用以下代码初始化 dMatrix。
class BpmSolve
{
private:
const int numZPts;
Eigen::Matrix<float, 1, numZPts> dMatrix;
public:
BpmSolve(numberZPoints);
};
BpmSolve::BpmSolve(int numberZPoints)
: numZPts(numberZPoints),
{
}
代码错误,因为numZPts 是一个变量。如果我将numZPts 替换为整数,则没有问题。
初始化这个类的正确方法是什么? C++11 选项很好。
谢谢。
【问题讨论】:
-
你打算如何设置
numZPts?它必须是编译时间常数,在这种情况下,BpmSolve的所有实例都应该相同,这意味着您可以这样做:static const int numZPts = 42; -
什么意思?我在初始化课程时设置它。构造函数位于类头下方。我只是打算调用构造函数。
-
嗯,这不是编译时间常数,所以你不能这样做。
-
是的,在编译时该值是未知的。它将根据用户输入而改变。这是一项要求。
-
查看 Eigen 文档,似乎有一个具有运行时维度的 Matrix 变体;这可能就是您所需要的(参见eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html)。