In function ‘void bundleAdjustmentG2O(const VecVector3d&, const VecVector2d&, const cv::Mat&, Sophus::SE3d&)’: /home/jerry/slambook2/ch7/pose_estimation_3d2d.cpp:319:10: error: ‘make_unique’ is not a member of ‘g2o’ 319 | g2o::make_unique<BlockSolverType>(g2o::make_unique<LinearSolverType>()));
时间: 2024-04-22 20:27:56 浏览: 249
define与const静态变量的用法
在您的代码中,出现了一个错误,指示 g2o 中没有名为 'make_unique' 的成员。这是因为在较新的 g2o 版本中,'make_unique' 函数已经被移除。相反,您可以使用标准库中的 'std::make_unique' 函数来创建独立指针。
要解决此问题,请将 'g2o::make_unique' 更改为 'std::make_unique',并确保您的代码正确包含了 `<memory>` 头文件。
修改后的代码应如下所示:
```cpp
std::unique_ptr<BlockSolverType> solver_ptr = std::make_unique<BlockSolverType>(
std::make_unique<LinearSolverType>());
```
这样应该能够解决您遇到的问题。如果还有其他问题,请随时提问。
阅读全文