声明一组c ++

时间:2013-05-05 10:33:53

标签: c++ set token

在这里声明一个集合有什么问题,这是我的教授代码。

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而我有旧版本,问题是什么?我阅读了参考资料,但它似乎过于复杂和令人困惑。

谢谢!

1 个答案:

答案 0 :(得分:2)

你必须使用C ++ 11来编译它,它使用initializer_list

set<Token> stmtBeginTokens { ...
                           ^ initializer_list (since C++11)

如果您的编译器支持C ++ 11,请使用-std=c++11编译选项(gcc)。