1

ここでセットを宣言することの何が問題なのですか。それは私の教授のコードです。

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>c:\users\sam\dropbox\compiler project 2\compilerproject2\lex\imp.h(39): error C2473: 'stmtBeginTokens' : 関数定義のように見えますが、パラメーター リストはありません。

私の教授は c++11 を使用しており、古いバージョンを使用しています。それが問題ですか? リファレンスを読みましたが、非常に複雑でわかりにくいように思えました。

ありがとう!

4

1 に答える 1

2

コンパイルするには C++11 を使用する必要がありますinitializer_list

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

コンパイラが C++11 をサポートしている場合は、-std=c++11コンパイル オプション (gcc) を使用します。

于 2013-05-05T10:37:58.953 に答える