c++ - 对类型“A *”的非常量左值引用不能绑定到不相关类型“std::shared_ptr ”的值
问题描述
解决方案
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) {}
推荐阅读
- r - stat_summary 按组的问题
- sungridengine - Sun Grid Engine 获取历史作业信息
- java - 在没有jdk的情况下登录java web start?
- reactjs - 使用 docker-compose 对 React 应用程序进行 Dockerize
- java - Docker 中的 Akka HTTP
- c++ - 删除使用 new 创建的 2D 或 3D 指针
- uima - 如何在匹配的注释表达式 UIMA RUTA 中获取子字符串?
- typo3 - TYPO3:在特定页面 ID 上停用后端布局
- typescript - 我可以有一个对象的枚举吗?
- visual-c++ - 如何解决 C++ 中的中断错误以创建二维矩阵