问问题
1573 次
1 回答
2
std::shared_ptr<X>
不能隐式转换为X*
. 因此,由于BuildStack
需要一个原始指针,因此当您尝试使用 shared_ptr 调用它时它会抱怨。您可以从 shared_ptr 获取原始指针:
void Target::GoWheeled() {
// this variable is only needed because BuildStack takes an lvalue reference
// if you can change that, you don't need the variable
MobileRobot* rawPtr = wheeledRobotInMaze.get();
wheeledMaze.BuildStack(rawPtr);
}
或者,可能是更好的选择,因为始终使用 shared_ptr 而不是将其与原始指针混合通常是一个好主意,您可以更改签名BuildStack
以采用 shared_ptr:
void Maze::BuildStack(std::shared_ptr<MobileRobot> &robot_in_maze) {}
于 2019-05-13T00:17:43.110 回答