摘要:【1】基础部分 《信号和槽机制》 《信号与槽知识点》 《QString 与 string转换》 《QT 继承QWidget && 继承QDialog》 《QString字符串中双引号的梗》 《Qt Md5应用示例》 《QDialog 使用Demo》 《Qt 添加 QtNetwork 库文件》 《QS 阅读全文
posted @ 2019-12-08 22:18 kaizen 阅读(106) 评论(0) 推荐(0) 编辑
摘要:【1】基础部分 (1)宏定义 《assert》 《offset宏》 《#pragma once》 《宏定义学习》 《预处理语句》 《#if 0 #end if》 《C语言 宏定义的1<<0 与 直接定义1 有什么区别》 《区分不同操作系统、编译器不同版本的宏》 《宏和函数的区别(一个BUG的总结)》 阅读全文
posted @ 2019-12-08 21:53 kaizen 阅读(242) 评论(0) 推荐(0) 编辑
摘要:【1】潜规则 各行各业都有潜规则。程序也不例外。 顺序(main),即逻辑;判断(if),即业务;循环(for),即坚持。 【2】关系 社会上没有一处人事关系不复杂。其实,程序也一样的,大系统中对象与对象之间的关系也很复杂。 【3】辈分 现实中往往存在排资论辈的现象。在程序中,一个对象继承于谁也相当 阅读全文
posted @ 2018-06-04 11:47 kaizen 阅读(304) 评论(1) 推荐(2) 编辑
摘要:ERROR:C2676 二进制“==”:“Student”不定义该运算符或到预定义运算符可接收的类型的转换 多次被同事问到此类错误,于此备录一下。 【1】复现问题 用最简单代码复现说明此问题,示例如下: 1 #include <iostream> 2 #include <map> 3 #includ 阅读全文
posted @ 2020-06-04 19:06 kaizen 阅读(418) 评论(0) 推荐(2) 编辑
摘要:工作中经常遇见的一个场景:判断某个元素是否在vector容器中。 当然,会有很多种方法,由内置数据类型到自定义数据类型,下面简单总结一下。 【1】内置数据类型 代码胜过一切文档。如下示例代码: 1 #include <iostream> 2 #include <vector> 3 #include 阅读全文
posted @ 2020-05-31 16:00 kaizen 阅读(1157) 评论(0) 推荐(0) 编辑
摘要:【1】Windows10 为某软件添加右键(包括文件、目录、桌面(目录内)的空白位置)菜单 下文以Visual Studio Code为例,其他软件类比操作。具体方案步骤如下: (1)新建一个txt文件,文件名随便(例如:add_right_shortcut.txt) (2)复制如下内容,粘贴到tx 阅读全文
posted @ 2020-04-17 10:17 kaizen 阅读(119) 评论(0) 推荐(0) 编辑
摘要:【1】hpp文件 hpp,Header plus plus的缩写,实质是将.cpp的实现代码混入.h头文件,即定义与实现都包含在同一个文件中。 该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。 实现代码将直接编译到调用者的obj文件中,不再生成单独的o 阅读全文
posted @ 2020-04-12 21:05 kaizen 阅读(200) 评论(0) 推荐(0) 编辑
摘要:【1】函数符定义 函数对象,也叫函数符(functor)。即函数符其实是对函数对象的一种别称。 函数符(函数对象)是指可以类似函数方式与()结合使用的任意对象。 那么,很显然,函数符包括函数名、函数指针的对象和重载了()运算符的类对象(即定义了函数operator()()的类)。 【2】函数符种类 阅读全文
posted @ 2020-04-05 14:28 kaizen 阅读(52) 评论(0) 推荐(0) 编辑
摘要:【1】错误列表 今天被同事问到这个问题,当时一阵懵圈。现梳理操作方式如下: 工具(调试)——>选项——>项目与解决方案——>常规——>若生成完成时有错误,则始终显示错误列表(T) 如下图示例: good good study, day day up. 顺序 选择 循环 总结 阅读全文
posted @ 2020-04-04 23:47 kaizen 阅读(427) 评论(0) 推荐(0) 编辑
摘要:【1】复现编译错误 C2675: 一元“++”:“_Iter”不定义该运算符或到预定义运算符可接收类型的转换 1 #include <map> 2 #include <unordered_map> 3 4 struct GJGActionEvent 5 { 6 std::map<std::strin 阅读全文
posted @ 2020-04-03 00:10 kaizen 阅读(550) 评论(0) 推荐(1) 编辑
摘要:【1】右值和左值引用成员函数 【2】应用示例 简单的示例程序如下: 1 #include <iostream> 2 3 struct Test 4 { 5 // can be invoked on lvalue 6 void f() &; 7 8 // can be invoked on rvalu 阅读全文
posted @ 2020-03-16 00:12 kaizen 阅读(65) 评论(0) 推荐(0) 编辑
摘要:【1】std::function简介 std::function是一个函数包装器模板,最早来自boost库,对应其boost::function函数包装器。 一个std::function类型对象实例可包装以下可调用元素类型等等: (1)函数 (2)函数指针 (3)类成员函数指针 (4)任意类型的函 阅读全文
posted @ 2020-03-01 01:42 kaizen 阅读(378) 评论(0) 推荐(0) 编辑
摘要:【1】spdlog简介 spdlog是一个开源的、快速的、仅有头文件的基于C++11实现的一款C++专用日志管理库。 【2】源码下载 下载地址:https://github.com/gabime/spdlog 【3】工程配置 (1)解压缩源码包 解压后,找到include文件夹。类比本地: 注意:i 阅读全文
posted @ 2020-02-28 02:16 kaizen 阅读(1165) 评论(0) 推荐(0) 编辑
摘要:【1】复现错误 error c2663: n个重载没有“this”指针的合法转换 错误示例代码: 1 #include <iostream> 2 using namespace std; 3 4 class Student 5 { 6 public: 7 Student(string name, s 阅读全文
posted @ 2020-02-25 00:34 kaizen 阅读(303) 评论(0) 推荐(0) 编辑
摘要:【1】作者简介 【2】库 https://github.com/nlohmann/json 【3】应用示例 (1)工程配置 (2)示例代码 1 #include <string> 2 #include <vector> 3 #include <fstream> 4 #include <iostrea 阅读全文
posted @ 2020-02-16 23:45 kaizen 阅读(953) 评论(0) 推荐(0) 编辑
摘要:当然,从官网下载对应版本包进行升级是其中一种方式。 温馨提示:以下方法基于默认原CMake版本是在安装Python的基础上进行安装的。 CMake安装:在安装Python后,通过命令pip install cmake安装。 【1】卸载旧版本 以管理员身份运行Cmder,查看目前版本号(本地为3.15 阅读全文
posted @ 2020-02-15 23:48 kaizen 阅读(527) 评论(0) 推荐(0) 编辑
摘要:由于不同的IDE中Tab键的宽度不一样,所以为了让在不同的IDE中看到相同的缩进效果,在一些代码规范标准中通常要求将Tab键换成4个空格表示。 【1】如何在VS中设置输入Tab键后智能转换为键入4个空格? 设置步骤:工具 ->选项 ->文本编辑器 ->所有语言 ->制表符 (1)选中“智能” (2) 阅读全文
posted @ 2020-02-15 23:14 kaizen 阅读(713) 评论(0) 推荐(0) 编辑
摘要:本地版本 Microsoft Visual Studio Community 2019 【1】Visual Studio 2019 UTF-8编码调试显示中文 (1)修改stl.natvis文件(大约753~756行) 文件位置:建议使用everything直接搜索文件名 参考本地位置:E:\Pro 阅读全文
posted @ 2020-02-10 00:55 kaizen 阅读(1060) 评论(0) 推荐(0) 编辑
摘要:【1】设置默认支持(Tab转为4个空格) 设置默认支持,即只要进行如下设置操作,以后软件默认就会支持将Tab全部转换为4个空格 操作步骤:设置—>首选项—>语言—>制表符设置—>替换为空格(勾选上) 【2】设置临时支持(Tab转为4个空格) 设置临时支持,即只要进行如下流程操作,仅对当前打开文件会将 阅读全文
posted @ 2020-02-06 16:26 kaizen 阅读(639) 评论(0) 推荐(0) 编辑
摘要:在C++中,声明自定义的类型之后,编译器会默认生成一些成员函数,这些函数被称为默认函数。其中包括 (1)(默认)构造函数 (2)拷贝(复制)构造函数 (3)拷贝(复制)赋值运算符 (4)移动构造函数 (5)移动赋值运算符 (6)析构函数 另外,编译器还会默认生成一些操作符函数,包括 (7)opera 阅读全文
posted @ 2020-02-01 03:36 kaizen 阅读(823) 评论(0) 推荐(0) 编辑
摘要:【1】constexpr VS const const修饰的都是具有运行时常量性; constexpr修饰的都是具有编译时常量性; 假如你将一个成员函数标记为constexpr,则顺带也将它标记为了const。如果你将一个变量标记为constexpr,则同样它是const的。 但相反并不成立,一个c 阅读全文
posted @ 2020-02-01 01:12 kaizen 阅读(125) 评论(0) 推荐(0) 编辑
摘要:【1】C++11智能指针 (1)废弃auto_ptr auto_ptr应用示例: 1 auto_ptr<string> p1(new string("auto_ptr")); 2 auto_ptr<string> p2; 3 p2 = p1; // auto_ptr不会报错 此语句 p2 = p1; 阅读全文
posted @ 2020-01-31 22:32 kaizen 阅读(76) 评论(0) 推荐(0) 编辑
摘要:【1】枚举:分门别类与数值的名字 当程序中需要“数值的名字”时,通常有三种方式实现: (1)宏 1 #define Male (0) 2 #define Female (1) 缺点:如果代码中右Male或者Femal字符串,在预处理阶段一律替换,干扰正常代码。 (2)匿名的enum enum { M 阅读全文
posted @ 2020-01-31 18:36 kaizen 阅读(101) 评论(0) 推荐(0) 编辑