摘要:
虚基类(Virtual Base Class)在面向对象编程中的作用是解决多重继承中的菱形继承问题(Diamond Inheritance Problem)和共享基类问题(Shared Base Class Problem)。 菱形继承问题是指当一个类以多种路径继承自同一个基类时,会导致该基类在派生 阅读全文
摘要:
参考:https://www.jianshu.com/p/10ae453701ed 问题:如果一个子模块的分支不是最新的该怎么处理? 方法:在主仓库内使用 cd 命令切换到子模块的仓库,使用 git pull 拉取最新提交,如果想切换到其他分支,可以使用 checkout 调整 拉取完之后,再切回到 阅读全文
摘要:
看陈皓的博客后,发现这一点,以前都没注意过,也是因为没这样用过 陈皓叔 R.I.P... 见下面代码: #include <iostream> class Base { int b; public: virtual ~Base() { std::cout << "B::~B()" << std::e 阅读全文
摘要:
看 SO 上有一个比较奇怪的问题, When does an rvalue reference result in a move vs copy constructor and why? 问题代码: ClassX c = std::move(object_c); // Invokes move co 阅读全文
摘要:
最近接到一个需求,使用 sdk 提供的消息回调,一般我们是继承 sdk 的消息类,然后 sdk 的消息回调(虚函数)会在有消息的时候调用回调指针,从而触发回调 不过因为 sdk 那边又对该消息类二次封装了并提供了一些接口,所以在研究二次封装的方法时,遇到了一些有意思的问题,故记录下 typedef 阅读全文
摘要:
Ubuntu 国内下载地址:https://mirrors.tuna.tsinghua.edu.cn/# 1. 安装一些常用的软件时,需要下载 amd.deb 类型的包,并使用下面命令安装 sudo dpkg -i xxx.deb 2. 如果是用英文安装的 Ubuntu,则需要在设置中添加中文 添加 阅读全文
摘要:
前文提到了 CMake 学习 文末基本涵盖了我遇到的编译问题,但是在得到一个编译好的 .lib 文件后,还需要放到项目中引用成功后才算真正的完成静态库的编译 嗯,我之所以说这些是因为我在项目中链接静态库时出现了 LNK2019 经典错误 错误如下: Libraryd.lib(at_exit.obj) 阅读全文
摘要:
最近有一个多个 .h .cc .cpp 编译成静态库的需求,故记录下过程 静态库不同于动态库,它不需要 main 入口,只要各个源文件与头文件能对应,也就是源文件和头文件引用的头文件能够找到函数的符号文件,即可编译成功 新手教程参考: CMake 中文版 CMake 英文版 因为只需要用到部分源文件 阅读全文
摘要:
1. C++/Qt 实现一个信号槽 #include <functional> #include <iostream> #include <vector> class Signal { public: using SlotFunction = std::function<void()>; void 阅读全文
摘要:
继上篇 Qt5.15.0 升级至 Qt5.15.9 遇到的一些错误 篇幅有点长,先说解决方法,在编译静态库时加上 -qt-libjpeg,编译出 libjpeg 库后,在项目中使用 #pragma comment 链接即可 OK,开始回顾痛苦经历 在我以为升级到 Qt5.15.9 后,运行没有什么问 阅读全文