我寫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變量應該儘快初始化」。非常感謝。 –