gaoxiang12 / slambook

MIT License
6.76k stars 3.24k forks source link

第六章g2o优化中使用了错误的unique_ptr赋值 #263

Open tiemuhua opened 3 years ago

tiemuhua commented 3 years ago

第六章g2omain函数的第79行和第81行分别应该是 unique_ptr<BlockSolver> blockSolver_ptr(new BlockSolver(std::move(linearSolverPtr))); // 矩阵块求解器 g2o::OptimizationAlgorithmLevenberg *solver_ptr = new g2o::OptimizationAlgorithmLevenberg(move(blockSolver_ptr)); 书中直接用了unique_ptr作为构造函数的参数。 在传值过程中会进行拷贝,而unique_ptr是不允许通过拷贝复制函数进行拷贝的,必须用move函数来转移所有权