C ++: ожидаемый идентификатор перед числовой константой

c++ matrix

9304 просмотра

3 ответа

Я пытаюсь написать небольшую программу с использованием 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, но именно здесь произошла ошибка для меня.

Автор: Psirus Источник Размещён: 12.11.2019 09:10

Ответы (3)


6 плюса

Решение

Вы должны сделать это в списке инициализатора конструктора.

class myClass {
    mtl::dense2D<double> Ke;
public:
    myClass() : Ke(mtl::dense2D<double>(6, 6)) { }
};
Автор: Cat Plus Plus Размещён: 15.05.2011 01:42

4 плюса

Потому что, когда вы объявляете

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
};
Автор: Jesse Emond Размещён: 15.05.2011 01:44

3 плюса

Вы не можете инициализировать переменную в области видимости класса, вам нужно сделать это в конструкторе. Изменить это:

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

к этому --

class myClass
{
public:
    myClass() : Ke(6,6) { }
private:
    mtl::dense2D<double> Ke;
};
Автор: eduffy Размещён: 15.05.2011 01:44
Вопросы из категории :
32x32