0

以下に示すように、一連のメソッドを含む 1 行を記述しようとすると、コンパイル エラーが発生します。

int index=data.getPlayer1().getIndex();

この場合のエラーは

無効な引数

しかし、チェーンを分割すると、すべてうまくいきます。

Player player1=data.getPlayer1();
int index=player1.getIndex();

これらのメソッドはすべて同じ名前空間の一部であり、#include 表記が適切です。この問題を解決するにはどうすればよいですか?

編集:

ゲッターを以下に示します。

    const Player& getPlayer1() const {
    return player1;
}

int getIndex() { return index;}
4

1 に答える 1

2

getPlayer()を返しますconst Player&getIndex()、非メンバー関数であり、オブジェクトで非メンバー関数constを呼び出すことは不正です。Make (これは getter であり、オブジェクトを変更しないため、とにかくそうあるべきです):constconstgetIndex() const

int getIndex() const { return index; }
             //^^^^^

スプリットケースで機能します:

Player player1=data.getPlayer1();

コピーが作成Playerされているため、オブジェクトでplayer1はなく、呼び出すことができます。constgetIndex()

于 2013-05-22T19:49:47.483 に答える