繁体   English   中英

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

[英]C++: expected identifier before numeric constant

我正在尝试使用MTL编写一个小程序,但是当我尝试使MTL Matrix成为一个类的成员时,我得到了上述错误。

#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;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM