用模板中的变量初始化类中的对象
C++ Initialising Object In Class With Variable In Template
我正在尝试使用以下代码初始化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选项就可以了
谢谢。
Eigen::Matrix
是一个模板,模板参数必须在编译时可用。numZPts
的值在编译时不可用-每次构造BpmSolve
对象时,该字段的值可能不同,并且在编译时不知道该值。所以你的要求是不可能的
numZPts
值在编译时没有定义。如果该类的所有实例碰巧在整个代码中都使用该值的常量,则可以简单地将该类转换为由它参数化的模板:
template <int numZPts>
class BpmSolve {
private:
Eigen::Matrix<float, 1, numZPts> dMatrix;
// [...]
BpmSolve::BpmSolve(){
}
实例成为:
BpmSolve<init> instance;
不是BpmSolve instance(init);
如果这个类有继承的子类,这可能会触发进一步的更改。
相关文章:
- 用C++中的CPerson(类)类型的对象初始化STL矢量
- 对象初始化中是否允许指向此成员的指针?
- 对象初始化后在C++中显示 char 数组时的异常行为
- 为什么两种不同的对象初始化方式给出不同的输出
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- afxmem.cpp中的对象初始化差异
- 删除通过取消引用新对象初始化的对象
- 如何使用sregex_token_iterator对象初始化向量
- 关于默认构造函数,对象初始化/使用C++ OOP
- C++ 基元类型初始化与对象初始化
- 哪个函数负责C++全局范围内的类对象初始化?
- C++中构造函数的对象初始化出现问题
- 如何修复模板 BST 类的对象初始化
- 无法在 QML/C++ 中使用绑定对象初始化 UI
- 为什么参数可以在对象初始化时通过赋值运算符传递给构造函数?
- 类对象初始化的二维向量
- GCC:当层次结构中存在虚拟继承时,C++11 内联对象初始化(使用 "this")不起作用
- 对象初始化
- 类对象初始化
- 使用从另一个类继承的类的对象初始化成员对象