在这里声明一个集合有什么问题,这是我的教授代码。
set<Token> stmtBeginTokens
{
Token::IF, Token::ID, Token::WHILE, Token::INPUT,
Token::OUTPUT, Token::EMPTYSTMT, Token::BREAK,
Token::RETURN, Token::HALT, Token::NEWLINE
};
稍后(参考):
bool isSTMTBegin(Token t)
{
return stmtBeginTokens.find(t) != stmtBeginTokens.end();
}
错误是1&gt; c:\ users \ sam \ dropbox \ compiler project 2 \ compilerproject2 \ lex \ imp.h(39):错误C2473:'stmtBeginTokens':看起来像函数定义,但没有参数列表。
我的教授使用的是c ++ 11而我有旧版本,问题是什么?我阅读了参考资料,但它似乎过于复杂和令人困惑。
谢谢!
答案 0 :(得分:2)
你必须使用C ++ 11来编译它,它使用initializer_list
。
set<Token> stmtBeginTokens { ...
^ initializer_list (since C++11)
如果您的编译器支持C ++ 11,请使用-std=c++11
编译选项(gcc)。