0

当我尝试使用如下所示的方法链编写一行时,出现编译错误:

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()返回 aconst Player&但是getIndex()是非成员函数,在对象上const调用非成员函数是非法的。制作(因为它应该是一个吸气剂并且不修改对象):constconstgetIndex() const

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

它适用于拆分情况:

Player player1=data.getPlayer1();

因为正在制作副本,并且不是对象并且可以调用。Playerplayer1constgetIndex()

于 2013-05-22T19:49:47.483 回答