C++:数字常量之前的预期标识符

C++: expected identifier before numeric constant

本文关键字:标识符 数字 常量 C++      更新时间:2023-10-16

我正在尝试使用 MTL 编写一个小程序,但是当我尝试使 MTL 矩阵成为类的成员时,我遇到了提到的错误。

#include <boost/numeric/mtl/mtl.hpp>
class myClass
{
private:
    mtl::dense2D<double> Ke(6,6);
};

但是,main() 中的相同语句没有问题:

#include <boost/numeric/mtl/mtl.hpp>
int main(int argc, char** argv)
{
    mtl::dense2D<double> Ke(6,6);
    return 0;    
}

我对C++很陌生,我认为这与 MTL 无关,但这就是我发生错误的地方。

您需要在构造函数的初始化器列表中执行此操作。

class myClass {
    mtl::dense2D<double> Ke;
public:
    myClass() : Ke(mtl::dense2D<double>(6, 6)) { }
};

因为当你声明

mtl::dense2D<double> Ke;

你只应该声明它,而不是创建它。这是构造函数在C++的工作:

class myClass
{
public:
    myClass() // constructor
        : Ke(6, 6) // here we use the constructor initializer
    {
    }
private:
    mtl::dense2D<double> Ke; // declaration
};

你不能在类范围内初始化变量,你需要在构造函数中这样做。 更改此设置:

class myClass
{
private:
    mtl::dense2D<double> Ke(6,6);
};

对此——

class myClass
{
public:
    myClass() : Ke(6,6) { }
private:
    mtl::dense2D<double> Ke;
};