Как инициализировать нестатическую константную переменную в классе в C ++?

Я написал следующие коды в Stack.h:

class Stack{
public:
inline bool full();
int size();
inline bool empty();
bool push(const string&);
bool pop(string &s);
bool peek(string &s);
virtual void print();
virtual ~Stack(){}

protected:
vector<string> _elem;
int const _maxsize=10;    // line X
};

Я получил ошибку:

Stack.h:14: error: ISO C++ forbids initialization of member ‘_maxsize’
Stack.h:14: error: making ‘_maxsize’ static
make: *** [Stack.o] Error 1

если я добавлю ключевое слово static в строку X и инициализирую переменную вне определения класса, все может быть в порядке.

Но мой вопрос заключается в том, есть ли какой-нибудь возможный способ объявить нестатическую переменную const и все же успешно инициализировать ее ???

1

Решение

Это действительно в C ++ 11. В C ++ 03 вам придется инициализировать его в конструкторе. Альтернативно, в C ++ 11:

class Stack{
int const _maxsize{10};
};
1

Другие решения

Да, инициализируйте это в вашем конструкторе

const int NumItems;

Foo::Foo():
NumItems(15)
{
//....
}
2

Ты можешь использовать enum

class C {
protected:
enum { var = 10 };
}

В этом случае C :: var будет постоянной времени компиляции, которую можно использовать даже в шаблоне.

Кроме того, C ++ 11 позволяет объявление, которое вы пытаетесь использовать.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector