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 に答える