void Player::move(Board &board, Solver &solver){
Position* best = solver.find_best_move(&board);
cout<<"Score: "<<best->get_score()<<endl;
cout<<"Board: ";
best->get_board()->print_board();
board = *(best->get_board());
Board * b(best->get_board());
cout<<"TEST: ";
b->print_board();
board = *b;
}
在调用函数后,我试图使实际的板参考等于新板。Board 是一个抽象类, get_board() 返回一个指向 Board 的指针,但它实际上是 board 的一个子类,它有一个额外的属性。但是,调用 move 函数后,棋盘与调用 move 之前的棋盘相同。是否可以在修改实际值的同时将子类分配给指向抽象超类的指针?切片问题似乎正在发生。