随笔分类 -  C++

摘要:1 #ifndef _ZTC_DELEGATE_H_ 2 #define _ZTC_DELEGATE_H_ 3 4 #include 5 #include 6 7 /////////////////////////////////////////////// 8 // C++ 使用 可变参数模板类, 来实现 9 // C#中的 委托10 // Anchor: ztc11 // Date : 2014-01-1012 ///////////////////////////////////////////////13 14 template15 class Delegate {16 p... 阅读全文
posted @ 2014-01-10 12:11 easyfrog 阅读(886) 评论(0) 推荐(0)
摘要:最近在研究 cocos2d-x 3.0 ,它在创建类的对象时比如 Layer 时, 并不是直接使用 new , 而是使用一个宏方法 CREATE_FUNC(MyLayer);. 这个宏就是自动的创建了一个 静态的 create 方法. 你可以使用 MyLayer::create(); 之所以这样做, 主要是使用了cocos2d-x 的引用计数式的垃圾回收机制. 这个机制是 Object-C 的 autorelease. 这样的方式很方便程序员, 不用再去自己去清理内存,不会造成内存泄漏. 而在 C++0X中 , 我就只能是使用 C++自己的一套机制了.. 可喜的是. 在 C++0x中 将 原. 阅读全文
posted @ 2013-12-29 17:01 easyfrog 阅读(3265) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 using namespace std; 4 5 int main() { 6 // 摄像头 7 cv::VideoCapture vc(0); 8 9 // 人脸分类器10 const char* filename = "D:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml";11 cv::CascadeClassifier face_cascade;12 // 加载人脸分类器13 if... 阅读全文
posted @ 2013-12-18 23:17 easyfrog 阅读(2091) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 /*10 知识点:11 this_thread : 当前线程12 chrono::system_clock::now() : 系统的当前时间点13 future async(std::launch::async,[](){...}) : 启动一个任务,返回的是一个 future 但一般直接 auto14 this_threa... 阅读全文
posted @ 2013-12-05 11:04 easyfrog 阅读(549) 评论(0) 推荐(0)
摘要:Mutex : 锁同一时间只允许一个线程访问其代码内容拟人 : 就是一把锁而已,可以lockunlock, 谁都可以拿到锁,打开门进屋,但进去后,就会把门锁上(lock) 别人想进就得等他出来(unlock).Condition_variable : 条件变量 用来阻塞线程, 在收到信号 或 满足某条件 或 等待超过某设定的时间 时继续运行线程拟人 : 相当于 拿着锁 (用锁来初始化)的保安同志.. 他拿着锁,有权力控制门的打开与关闭,他是按着上级的 指示/时间/条件 才会打开大门的 1 #include 2 #include 3 #include 4 using namespace s... 阅读全文
posted @ 2013-12-04 23:53 easyfrog 阅读(696) 评论(0) 推荐(0)
摘要:Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数~~~ 呵呵... 看着有点晕..再解释一下就是 在Unity中 使用 C# 调用 C++ 写的 DLL, 但是在这个 C++ 的 DLL 的某一个方法中,用到的 回调函数. 也就是需要 在 C# 中传入一个与 C++中签名相同的 方法的问题.一般在 C++ 中 使用 这种文件 创建一个函数的指针 : // 开辟内存空间的函数指针 (float *& 为float型指针的引用) typedef void (*AllocSpace)(int,int,int,float*&,float*&,int 阅读全文
posted @ 2013-11-23 00:53 easyfrog 阅读(2347) 评论(0) 推荐(0)
摘要:Lambda在C#中使用得非常频繁,并且可以使代码变得简洁,优雅.在C++11 中也加入了 Lambda. 它是这个样子的 [] () {}... 是的三种括号开会的节奏~ [] 的作用是表示Lambda的开始.并且告诉编译器.在这个表达式中要用哪种方式去访问同一作用域中的其它变量[=] : 表达以值传递的方式调用[&] : 表示以引用的方式调用[a,b,&c] : 表示a,b为值传, c为引用传递[=,&a] : 表示除了a为引用传,其它都为值传[&,a,b] : 表示为了a,b 为值传,其它都为引用传递[this] : 表示将类的this 指针传入了, 这样 阅读全文
posted @ 2013-11-19 11:08 easyfrog 阅读(482) 评论(0) 推荐(0)
摘要:如果想在Unity3D中去播放视频文件,那么最方便的方法就是使用它自带的MovieTexture. 可以实现简单的视频播放功能. Play Pause Stop. 有也只有这三个功能, 如果你想要一个进度条,并且可以随意的拖拽视频的进度的话, 那就不能满足你的需求了. 所以想使用 DirectShow 这个视频开发包.来实现我们的想法. 这东西是基于COM组件的一套 C++ 开发库. 所以花了两天时间,各种Google. 把这个功能实现了, 在这里把流程记录一下,做为备忘. DirectShow 是由各种的 过虑器(Filter) 及 接口(Interface) 组成的. 处理过程就是 根.. 阅读全文
posted @ 2013-11-09 00:22 easyfrog 阅读(2558) 评论(10) 推荐(0)
摘要:这个概念主要用在C++中去实现"委托"的特性. 但现在C++11 中有了 更好用的function/bind 功能.但对于类的成员函数指针的概念我们还是应该掌握的.类函数指针 就是要确定由哪个 类的实例 去调用 类函数指针所指的函数.typedef void (Human::*fp)(); 定义了一个类的函数指针.fp classFunc = &Human::run; // 注意这里是方法的地址.告之具体的指向类中的哪个函数(human->*p)(); 或 (human.*p)(); // 这是使用一个类的实例去调用类的函数指针 *p 就是取得方法的地址 然后 阅读全文
posted @ 2013-10-29 22:14 easyfrog 阅读(3313) 评论(0) 推荐(0)
摘要:1 #include 2 3 #pragma comment(lib,"strmbase.lib") 4 #pragma comment(lib,"quartz.lib") 5 6 int main() { 7 // Filter Graph Builder 8 IGraphBuilder *pGraph = NULL; 9 // Media Control10 IMediaControl *pControl = NULL;11 // Media Event12 IMediaEvent *pEvent = NULL;13 // 初... 阅读全文
posted @ 2013-10-27 19:12 easyfrog 阅读(454) 评论(0) 推荐(0)
摘要:1. vectorvector<int> vec;// 向最后加一个元素vec.push_back(12);// 删除最后一个元素vec.pop_back();// 第一个元素的指针vec.begin()// 最后一个元素的*下一个*地址的指针vec.end()// 第一个元素vec.front()// 最后一个元素vec.back()// 是否含有元素vec.empty()// 迭代器Vector<int>::iterator iter;// 使用迭代器遍历元素for(iter = vec.begin();iter != vec.end();iter++){ cout 阅读全文
posted @ 2012-12-28 17:14 easyfrog 阅读(174) 评论(0) 推荐(0)
摘要:在C++中使用 new 堆中申请了一块内存,在你使用完成后要“记得” 去释放它(delete),不然这块内存就浪费掉了。但是让所在程序员都”记得“ 这件事儿本身就不靠谱。 特别是在程序变得很大之后。 没有人会记得所有你需要释放的内存。这时候 就想如果能像 C#那样。程序自己去管理内存就太爽了。很大程度的给程序员减负呀~~~~在C++ memory.h 中就有一个这种类的实现 auto_ptr.先说下它的原理, 很简单。 就是用栈中的变量去释放堆中的内存,因为 栈中的变量是在不需要的时候自动释放掉的。 这样我们就可以在这个变量的析构函数中去 delete 掉这块内存了。比如 : 这样一个简单的类 阅读全文
posted @ 2012-12-28 12:44 easyfrog 阅读(386) 评论(0) 推荐(0)
摘要:现在非常的流行使用C++来完成底层的算法或是需要高运行速度的程序快。然后使用 C# 来调用。用C#来写界面和逻辑层。 这样即用到了 C++ 的运行速度又用到了C# 快速的开发优势。下面讲一下如何在C#中调用 C++生成的dll :// cppdll.cpp 因为这个DLL的目的就是为了让 C#去调用。所以这里不用// 再去写个头文件了,写头文件主要是为了让 C++的程序去调。我们这里// 是把函数的声明与定义都写在一起。#include using namespace std;// 把固定要使用的 “extern "C" __declspec(dllexport)”,放在函 阅读全文
posted @ 2012-11-13 10:08 easyfrog 阅读(959) 评论(0) 推荐(0)
摘要:C++中的模板 + 函数指针, 用来模拟 C# 中的 泛型代理 如: Action<T> Func<T,TResult>C++ 中的函数指针定义 : typedef void (*Action)(int i) 这是定义了一个 无返回值,只有一个int 型参数的方法指针 , 但如果我要使用一个 string 或 float 等其它参数类型的方法,就只能再定义一个函数指针.C++ 中的模板函数定义 : template <class T> void Action(T) , 这样就可以把参数类型做为参数传给方法,但如果结合上面的 函数指什呢?... 阅读全文
posted @ 2012-11-04 13:53 easyfrog 阅读(13141) 评论(1) 推荐(0)