如何将子类分配给函数中的抽象类指针
How to assign a subclass to an abstract class pointer in a function?
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 的一个子类,它有一个额外的属性。但是,在调用移动函数后,板与调用移动之前是相同的板。是否可以在修改实际值的同时将子类分配给指向抽象超类的指针?切片问题似乎正在发生。
我会使用 Board*
指针而不是 Board&
引用,特别是因为涉及子类:
void Player::move(Board **board, Solver &solver)
{
Position *best = solver.find_best_move(*board);
cout << "Score: " << best->get_score() << endl;
*board = best->get_board();
cout << "Board: ";
(*board)->print_board();
}
Player p;
Solver solver;
Board *b = ...;
p.move(&b, solver);
或:
void Player::move(Board* &board, Solver &solver)
{
Position *best = solver.find_best_move(board);
cout << "Score: " << best->get_score() << endl;
board = best->get_board();
cout << "Board: ";
board->print_board();
}
Player p;
Solver solver;
Board *b = ...;
p.move(b, solver);
相关文章:
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 两个抽象类,派生自同一个基类.如何访问从一个抽象类到另一个抽象类的指针
- 删除指向抽象类的指针向量
- 如何将抽象类指针作为Q_PROPERTY?
- 为什么我可以取消引用指向抽象类的指针?
- 指向抽象类的指针数组:指向 nullptr 或不指向 nullptr (C++)
- C++ abort() 在函数内的抽象类对象指针调用上
- 抽象类和独特的指针
- 如何使用抽象类指针避免内存泄漏
- 如何从抽象类中删除指针
- 指向模板抽象类的指针向量
- 指针到抽象类的功能超载
- 使用抽象类时,如何正确删除指针
- 抽象类和唯一指针 c++ 错误
- 尝试在映射C++中存储指向抽象类的指针
- C++中的抽象类指针
- 如何将子类分配给函数中的抽象类指针
- 带有抽象类指针的c++对象副本
- 如何在c++中实现与抽象类指针向量的缓存一致性
- C++访问抽象类指针向量的子类的成员