构造函数与析构函数:C++大括号{}有作用于,在作用域范围结束时,调用结构体的析构函数,构造函数是与类同名人那个函数,析构函数是前面带~的函数。
关于《视觉SLAM十四讲》第六讲的g2o拟合曲线实验部分,困扰我两天在bug终于解决了。前人已经解决过了。其实这个问题是类型不匹配的问题。Block()的构造函数是需要std::unique_ptr<Block::LinearSolverType>类型的智能指针类型。
参考这个链接https://www.cnblogs.com/xueyuanaichiyu/p/7921382.html。
关于出现的许多undefined reference 问题,find_package没找到,这是因为findG2O.cmake文件里面在变量有变。
g2o困扰我的undefined reference 昨天就解决了,问题是这样的,我想找到g2o的链接库,先到网上找到了FindG2O.cmake 文件放到工程目录的cmake文件夹,然而当我依照OpenCV写target_link_library(out ${G2O_LIBS}), Message(STATUS "${G2O_LIBS}"),返回的路径竟然是空的,就来G2O_INCLUDE_DIRS返回的路径也是空的,查到原因:进入FindG2O.cmake 文件,返回的include路径文件是G2O_INCLUDE_DIR, 而且众多在共享库的返回路径名字也各不相同,所以只能一一进行链接。
接下来关于继承类的初始化列表构造函数把的困扰了两天,问题是一个语句始终编译不通过,为什么花了这么长时间才解决,主要是以下几点认识不清楚:
1、类初始化列表构造赋值方法不清楚,看不懂_x(x)的含义是什么,这其实就是_x = x的含义。
2、对类初始化列表构造的格式不清楚,列表赋值是用逗号分隔,后面跟一对大括号。
3、对于类继承方法、类的模板使用参数化不清楚,继承的直接基类的构造函数是无参数的,但是直接基类的类型是通过模板参数传递的。请看下面代码。