
c++
wayen820
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
boost 中ref用法经验
boost库中ref用于包装一个对象,使其看起来像别名一样。考虑到有下面一个模板函数:templatevoid print(T a){ for(int i=0;i<2;++i) { boost::unwrap_ref(a).print(); }}这个函数假设是库函数,你要调用他但是不想要以拷贝T的方式来传参数,这时候你用boost::ref来包原创 2017-07-14 12:04:41 · 2079 阅读 · 0 评论 -
cmake中宏的使用
首先贴一个例子进行分析set(var "ABC")macro(Moo arg) message("arg = ${arg}") set(arg "abc") message("# After change the value of arg.") message("arg = ${arg}")endmacro()message("=== Call macro ==="原创 2018-05-21 15:12:16 · 5126 阅读 · 0 评论 -
OpenCV使用FileStorage保存Mat数据
在OpenCV2.0以后的版本中,加入了对C++的支持,大大减少了程序代码量,方便了程序编写,也更符合现代编程思想。在视觉处理过程中,往往需要保存中间数据。这些数据的数据类型往往并不是整数。OpenCV的C++接口中,用于保存图像的imwrite只能保存整数数据,且需作为图像格式。当需要保存浮点数据或XML/YML文件时,OpenCV的C语言接口提供了cvSave函数,转载 2018-01-09 10:57:27 · 3008 阅读 · 1 评论 -
c++类的模板成员函数申明和实现必须放在一起
解释如下:C++中每一个对象所占用的空间大小,是在编译的时候就确定的,在模板类没有真正的被使用之前,编译器是无法知道,模板类中使用模板类型的对象的所占用的空间的大小的。只有模板被真正使用的时候,编译器才知道,模板套用的是什么类型,应该分配多少空间。这也就是模板类为什么只是称之为模板,而不是泛型的缘故。既然是在编译的时候,根据套用的不同类型进行编译,那么,套用不同类型的模板类实际上就是两原创 2017-12-12 17:32:04 · 6381 阅读 · 3 评论 -
boost构造和解析json
构造json代码实例:void asynDBCenter::isGetActorInfoEx(void* on_process, const char* arg){ std::stringstream ros(arg); boost::property_tree::ptree pt; boost::property_tree::read_json(ros, pt);转载 2017-12-12 16:21:37 · 694 阅读 · 0 评论 -
c++中静态字符串常量定义方法
写过c#或则java的知道可以在类中定义静态或自读的字符串常量,但是在c++里面实现方法不一样,在c++的头文件里面直接:static const std::string CONST="str";这样是无法编译通过的,c++只允许像int类型的静态变量直接在头文件里面初始化,像string这种类型必须要在实现文件里面这样初始化:const std::string A::CONST("str原创 2017-12-01 13:14:32 · 12805 阅读 · 0 评论 -
android ndk开发SIGSEGV错误
最近进行ndk开发,偶尔会报Fatal signal 11(SIGSEGV),这个问题非常诡异,诡异就在偶然出现,并且在不同的地方。查看日志发现都是内存malloc,free方面的错误,有opencv中的,有对std::vector进入插入分配内存引发的,有在jni函数中获取数组指针发生的,真的是让人摸不着头脑:最终发现并不程序本身的问题。问题是heap size的限制,因为我原创 2017-12-09 16:50:45 · 2214 阅读 · 0 评论 -
linux c++ 循环消息队列写法
很多场合,我们需要一个循环消息处理模式,一个线程产生消息,一个线程进行处理。产生消息的线程就不用阻塞了,可以用了干其他的事情了。常见串口或者网络通信,负责解析字节流的线程将消息初步解析然后放置到一个消息队列里面,处理线程负责循环取出消息队列里面的消息进行相应的动作。下面是一在liunx下一个基本实现框架:typedef struct Message{ char * msg; char *原创 2017-11-29 17:21:28 · 2586 阅读 · 1 评论 -
OpenCV中mat内存管理
OpenCV中大部分对象都像被std::share_ptr包装过的行为一样,你不需要自己手动释放资源。同标准库的智能指针一样,你不需要自己去手动删除指针,也许对于被智能指针管理的对象,根本就不建议你直接使用指针。所有的对象都应该建立在栈上,使用 Object obj;的方式获得对象,而不应该使用Object* pobj=new Object();你自己的类中需要保存被智能指针管理的对象,你直接原创 2017-09-11 19:10:18 · 2719 阅读 · 0 评论 -
c++多态,回调,和策略模式
熟悉高级语言像c#的人应该都知道,c#中有事件的机制,qt有信号槽的机制,设想我们有个简单的任务,窗口上一个按钮,按钮内部是一个button类,我们用鼠标点击一下他,他会发出一个鼠标点击的通知,我们需要在这个通知里面做一些自己的事情。我大概总结了三种方法。1 多态这是最一般的方法,继承button,利用多态性质覆盖button中鼠标点击的虚方法,在虚方法里面写自己的代码即可。2 回原创 2017-07-22 16:43:46 · 645 阅读 · 0 评论 -
c++中几个段错误调试记录
1 线程中调用一个外部函数出现 段错误,但是在主线程中却正常解决方法:将该线程的stack_size设置大一点,因为外部函数可能需要的内存资源比较多,默认的stack_size不够设置方法如下: bool start(void*(*thread_proc)(void*),void* arg,size_t stack_size=16*1024){ pthread_原创 2017-06-05 15:24:04 · 1806 阅读 · 0 评论 -
c++之回调实现方式
很多时候,我们需要提供一个类,这个类用来发出事件,通知程序中其他的组件进行处理,这可以通过回调来实现,下面是比较优雅的实现:#include#includeusing namespace boost;class serialwraper{public: typedef boost::function CallBack; void RegisterCallBack原创 2017-07-04 11:43:28 · 503 阅读 · 0 评论 -
android中和c++中生产者和消费者模式
首先上代码,androidpackage com.wmz.helloworld;import java.util.Random;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import andro...原创 2018-12-21 02:28:59 · 431 阅读 · 0 评论