1

オブジェクト ポインターのポインター ベクトルの要素をオブジェクト ポインターに割り当てるのに問題があります。私は Linux を使用しており、Eclipse IDE を使用しています。私の問題を見てみたい場合:

void Parse::parseDatalogProgram(vector<Token*>* tokens)
{
    Token* currentToken = tokens[0];
...
}

「初期化で 'std::vector' を 'Token*' に変換できません」という構文エラーが表示されますが、上記はそのようには見えません。これを適切に修正するにはどうすればよいですか?

4

3 に答える 3

5

tokensそれ自体ではなくポインタvectorです。できるよ

tokens->operator[](0);

また

(*tokens)[0];
于 2013-02-05T22:00:32.840 に答える
2
Token* currentToken = (*tokens)[0];

tokens が null でないことを確認してください。代わりに、参照を渡してみませんか?

于 2013-02-05T22:02:45.410 に答える
2

tokensオブジェクトまたは参照ではなく、vector へのポインターです。C++ の方法では、関数プロトタイプを次のように変更します。

void Parse::parseDatalogProgram(const vector<Token*>& tokens){...}

それが不可能な場合は、ポインターを使用する前に単純に逆参照することができます。Token* currentToken = (*tokens)[0]

于 2013-02-05T22:03:20.603 に答える