当我尝试使用如下所示的一系列方法编写一行时,出现编译错误:
int index=data.getPlayer1().getIndex();
本案例中的错误是
无效的参数
但是当我划分链条时,一切都很好:
Player player1=data.getPlayer1();
int index=player1.getIndex();
所有这些方法都是同一命名空间的一部分,#include符号是按顺序排列的。我该如何解决这个问题?
编辑:
吸气剂如下所示:
const Player& getPlayer1() const {
return player1;
}
int getIndex() { return index;}
答案 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()
。