2

我试图将一个对象传递给一个函数,但将其声明为 const ,因此它只能被读取而不能被更改。抛出一个需要表达式的错误,我不确定为什么或如何修复它。

我有一个父类及其子类都具有相同的函数签名,但做不同的事情,他们都需要反对才能完成他们的任务。

我对 c++ 仍然很陌生,并且查看了该网站上的其他问题,但没有找到任何答案;

谢谢。

 class Player{
   char getMove(const Board& board){

     char answer ='a';
     // ...
     return answer;
   }
 };
 class Computer : public Player  {
   char getMove (const Board& board){
      char answer = 'a';
      // ...
      return answer;
   }
 };

函数调用

 int main(){ 

    Player* player[2];
    player[0] = new Player;
    player[1] = new Computer;
    char p0Move, p1Move

    p0Move = player[0]->getMove(const board); 
    p1Move = player[1]->getMove(const board);

 }

错误:播放器[0]->getMove 和播放器[1]->getMove 处的“预期表达式”

4

2 回答 2

4

这些行是问题所在:

p0Move = player[0]->getMove(const board);
p1Move = player[1]->getMove(const board);

你在这里不需要'const'。你想要的是:

p0Move = player[0]->getMove(board);
p1Move = player[1]->getMove(board);
于 2019-08-21T05:23:21.870 回答
0

我在 Visual Studio 2017 中执行了您的代码:

1)添加公共说明符

class Player {
public:
    char getMove(const Board& board) {

        char answer = 'a';
        // ...
        return answer;
    }
};

class Computer : public Player {
public:
    char getMove(const Board& board) {
        char answer = 'a';
        // ...
        return answer;
    }
};
  1. 删除常量

    p0Move = player[0]->getMove(board);

    p1Move = player[1]->getMove(board);

于 2019-08-21T11:10:20.873 回答