VC ++ 6 Ошибка C2059: Синтаксис ошибка: 'constant'
Вопрос
Сделал этот простой класс с 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
также потребует конструктора по умолчанию и будет инициализироваться дважды).