方法链接导致编译错误

时间:2013-05-22 18:05:03

标签: c++ eclipse method-chaining

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

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

本案例中的错误是

  

无效的参数

但是当我划分链条时,一切都很好:

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

所有这些方法都是同一命名空间的一部分,#include符号是按顺序排列的。我该如何解决这个问题?

编辑:

吸气剂如下所示:

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

int getIndex() { return index;}

1 个答案:

答案 0 :(得分:2)

getPlayer()返回const Player&,但getIndex()是非const成员函数,调用非const成员函数是非法的const对象。 make getIndex() const(因为它应该是getter而不是修改对象):

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

它适用于拆分案例:

Player player1=data.getPlayer1();

因为正在制作Player副本,而player1不是const对象,可以调用getIndex()