VC ++ 6 Ошибка C2059: Синтаксис ошибка: 'constant'

StackOverflow https://stackoverflow.com/questions/4519035

  •  12-10-2019
  •  | 
  •  

Вопрос

Сделал этот простой класс с MSVC ++ 6.0

class Strg
{
public:
    Strg(int max);
private:
    int _max;
};


Strg::Strg(int max)
{
  _max=max;
}

Звучит хорошо, если я использую его в:

main()
{
  Strg mvar(10);
}

Но теперь, если я использую его в другом классе:

class ok
{
public:
    Strg v(45);
};

Я получаю ошибку сообщения:Ошибка C2059: синтаксическая ошибка: «постоянная»

Не могли бы вы сказать мне больше, пожалуйста?

Нет правильного решения

Другие советы

Должно быть:

class ok
{
public:
    Strg v;
    ok() : v(45) {}
};

Нестатические переменные члена, у которых нет конструкторов по умолчанию (в данном случае), должны быть инициализированы с помощью Списки инициализации. Анкет В функциях (например, Main), с другой стороны, вы можете использовать обычный синтаксис конструктора.

Компилятор жалуется, так это то, что вы пытаетесь дать инструкции о том, как TON создает экземпляр члена класса v Внутри определения вашего класса, которое не допускается.

Место для создания экземпляра v будет внутри контрактора или в списке инициализатора конструктора. Например:

Внутренний конструктор:

class ok
{
public:
    Strg v;
    ok() {
        v = Strg(45);
    }
};

В списке инициализаторов:

class ok
{
public:
    Strg v;
    ok() : v(45) {}
};

Правильный способ сделать это - последний (в противном случае, v также потребует конструктора по умолчанию и будет инициализироваться дважды).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top