我写Stack.h这些如下代码:如何在C++中初始化类中的非静态常量变量?
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
,如果我在行X添加静态的关键字,并初始化类定义外部变量,它可以是好的。
但我的问题是,是否有任何可能的方式来声明非静态const变量,并仍然成功地初始化它?
OK ...我看是否写了“Stack():_maxsize(10){}”,它会编译....但为什么如果我编写Stack(){const int _maxsize = 10;}? –
因为这会创建一个名为'_maxsize'的新变量。 –
是啊,看起来很合理......“const变量应该尽快初始化”。非常感谢。 –