- 博客(10)
- 收藏
- 关注
原创 类的设计:类中使用typedef,构造函数列表初始化与赋值,类的大小,前向声明
前言之前编程时,在private中定义了一个typedef,然后public中一个函数的参数类型用到了这个定义的类型别名,结果出现了"未定义报错"。当时应该是查了下原因,没找到,就把它先记下后面也一直没再管。后面那部分代码整体全部重构了下,就避开了这个问题。今天回头又看到之前记下的这个问题,只能说当时的代码槽点太多,所以才没能快速定位问题,一个优良的编程习惯下就不会出现这个问题。现在把当时的情况抽象成如下代码。进行一些总结。// 失败类设计大赏class Sensor{public: S
2021-02-05 09:32:29
499
原创 typedef与struct的使用,C++中struct变量声明可以省略struct
前言在定义结构体KeyFrameInfo给出如下警告,提示结构体没有使用别名,即typedef没有起作用。消除该警告的方法为去掉typedef 或者补充别名。由于typedef和struct经常结合使用,在使用细节上认知有点模糊,因此,对此进行了查阅和整理。// warning: ‘typedef’ was ignored in this declaration typedef struct KeyFrameInfotypedef struct KeyFrameInfo{ const std
2021-01-29 09:29:38
2993
原创 opencv鼠标交互与模组深度数据评估,cv::Mat元素类型与访问
前言主要涉及到两个方面的内容:一是预处理环节,通过鼠标交互在彩色/灰度图上框选出需要评估的画面范围;二是在上一步选出的区域上完成深度数据统计环节,这部分主要实际到有效点占比,平均值,方差(标准差),精度(标准差/均值)的计算。鼠标交互选择待评估区域因为这本身就是一个很简单且几乎是一次性的工作,所以程序设计上,没有设计成"在每个深度下可以多次选择评估框直至满意"。核心代码展示// preprocessor.cppcv::Rect roi_rect;bool g_drawbox = false;
2021-01-26 17:03:50
189
原创 cv::Mat的4种赋值操作区别以及cv::Mat作为函数参数4种形式的区别
背景在使用opencv Mat作为函数参数,对是否使用引用,是否使用const类型,总是比较疑惑。函数内部对Mat数据的改变是否会传递到函数外?是否会对整个Mat数据段进行拷贝?cv::Mat之间的拷贝是怎样的?从网上找到了一个详细介绍cv::Mat作为参数的4种形式之间的差异(cv :: Mat / cv :: Mat& / const cv :: Mat / const cv :: Mat&),此外,也补充了一部分关于cv::Mat数据格式和赋值操作相关的基础知识。cv::Mat
2021-01-21 11:11:10
5735
2
原创 OpenCV常用功能模块和对应的头文件
对于新接触的opencv的人,可以通过使用头文件#include <opencv2/opencv.hpp>,将所有模块的hpp文件都include进来。但是这样每次编译程序时,会加载所有模块,降低代码性能。下面整理的常用的功能模块和对应的头文件,编程时尽量只include用到的头文件。...
2021-01-20 16:47:56
736
原创 multiple definition重定义编译错误 & 全局变量的定义
前言有些自定义的变量类型和常量在整个项目中都可能会使用到,因此想到定义一个data_types.h文件用来实现该功能。变量类型的定义由于只需要在头文件中定义,不涉及到初始化,没有出现问题。但是对于一些常量如字典型常量在头文件中声明并直接初始化,出现了multiple definition重定义编译错误。原因在同一个头文件里写了变量或函数声明和定义,该文件被多个文件包含,造成变量或函数的重定义。程序的编译链接过程包括:预处理,编译,汇编和链接。预处理过程对伪指令(宏定义、条件编译、和引用头文件)和
2021-01-20 12:12:18
3237
原创 static关键字:类的静态成员
文章目录存储类说明符关键字C/C++程序内存的分配程序运行时内存占用情况三种内存分配方式C语言static关键字(面向过程设计)静态全局变量静态局部变量静态函数C++类中static关键字(面向对象设计)静态成员变量静态成员函数static关键字是一种存储类说明符,有两个作用,限定作用域和保持变量内容持久化;它延长了变量的生命周期,但是缩小了作用域。下面将详细介绍与它相关的知识点。存储类说明符关键字存储类说明符用来定义 C / C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所
2020-12-15 18:37:26
610
原创 vector erase使用
文章目录vector erase原型删除普通元素删除指针元素remove与erase混合使用vector erase原型// erase的函数原型有两种形式iterator erase(iterator p); // 删除某个迭代器p所指元素元素,返回被删元素之后元素迭代器。当p=end,函数行为无定义。iterator erase(iterator b, iterator e); // 或者迭代器范围[b, e)的元素在使用中需要注意到删除元素后迭代器的数量和位置的变化;在进行多值删除时,
2020-12-14 19:33:56
1148
原创 git学习笔记
git学习笔记学习资料:Git教程,廖雪峰;网络文章目录git学习笔记仓库创建与查看和修改本地git用户名和邮箱地址git代码状态转换介绍本地使用及操作添加⽂件到Git仓库,分两步:查看仓库的当前状态,以及文件状态差异查询 (工作区,缓存区,仓库区)版本回退撤销修改删除文件团队开发及操作分支管理远程仓库参考资料:仓库创建与查看和修改本地git用户名和邮箱地址这个 用户名 和 邮箱地址 只是用来记录本地 Git 提交信息的一个标识,和你远程仓库账号下的 用户名 或 邮箱地址 没有任何关系。# 从远程
2020-10-23 18:12:18
350
2
原创 ubuntu 18.04 ros-melodic安装错误“packages have unmet dependencies”
1.package依赖关系冲突软件安装过程中出现依赖库冲突的问题,如图开始一直纠结在python-catkin-pkg上,一直没解决,方向走偏了。其实,这是package依赖关系冲突问题。运行 sudo apt install -f,是修复依赖关系(depends)的命令。之后安装顺利。2.软件安装、卸载的几个相关命令apt-get -f install=apt-get install -f ,是修复依赖关系(depends)**apt-get autoremove **,删除为了满足其他
2020-09-25 09:54:26
484
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人