C ++: ожидаемый идентификатор перед числовой константой - PullRequest
3 голосов
/ 15 мая 2011

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

Ответы [ 3 ]

6 голосов
/ 15 мая 2011

Это необходимо сделать в списке инициализатора конструктора.

class myClass {
    mtl::dense2D<double> Ke;
public:
    myClass() : Ke(mtl::dense2D<double>(6, 6)) { }
};
4 голосов
/ 15 мая 2011

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

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
};
3 голосов
/ 15 мая 2011

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

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

к этому -

class myClass
{
public:
    myClass() : Ke(6,6) { }
private:
    mtl::dense2D<double> Ke;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...