随笔分类 -  C++

摘要:逼不得已不要用这个,const_cast 阅读全文
posted @ 2013-09-13 14:19 MrBlue 阅读(1470) 评论(0) 推荐(0)
摘要:std::bind是个c++推出的新的特性,非常有用,让你写起来率试不爽。#include using namespace std;#include int main() { cout int{ return a+b; },placeholders::_1,2); cout<<a(1)<<endl; //小相当于调用这个匿名函数时传的参数是(1,2) return 0;} 阅读全文
posted @ 2013-08-16 15:05 MrBlue 阅读(210) 评论(0) 推荐(0)
摘要:右击工程->Properties->C/C++ Builder->Setting->Tool Setting->Miscellanous->Other Flags添加-std=c++0x 阅读全文
posted @ 2013-08-16 14:47 MrBlue 阅读(588) 评论(0) 推荐(0)
摘要:ui部分使用了cocoStudio,注意这里没有实现怎么屏蔽其他的输入事件,其他的文档已经太多了,我这里使用的cocoStudio的控件自己的特性。这里强烈推荐一下cocoStudio,虽然现在还有不完善的地方,但是我个人感觉做的很不错了。下面是代码,编译的时候请开启c++11.//UI_ModalDialogue_Layer.h#ifndef __UI_MODAL_DIALOGUE_LAYER_H__#define __UI_MODAL_DIALOGUE_LAYER_H__#include "cocos2d.h"#include "cocos-ext.h&quo 阅读全文
posted @ 2013-08-13 10:50 MrBlue 阅读(3275) 评论(0) 推荐(0)
摘要:用$(MY_LIB)是代表你的库的所在目录,目录结构是这样MY_LIB |---include |-----xxx.h |-----xxx.h |---lib |----MYLIB.aLOCAL_C_INCLUDES += $(MY_LIB)/includeLOCAL_LDLIBS :=-L$(MY_LIB)/lib -lMYLIB 阅读全文
posted @ 2013-08-06 13:09 MrBlue 阅读(2179) 评论(0) 推荐(0)
摘要:转载自http://www.cnblogs.com/qytan36/archive/2010/06/28/1766555.htmlauto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针)auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。std::auto_ptr pa(new ClassA);下面主要分析一下auto_ptr的几个要注意的地方:1,Transfer of Ownershipauto_ptr与boost库中的share_ptr不同的, 阅读全文
posted @ 2013-08-05 13:15 MrBlue 阅读(279) 评论(0) 推荐(0)
摘要:在windows下用cygwin和eclipse搭建cocos2dx(2.1.4)的android开发环境,2013-8-1更新。一、准备工作需要下载和安装以下内容,请根据自己的操作系统选择x86和x64(我的是64位win7,我就拿64位说事)1、jdk-7u25-windows-x64.exe(下载完后直接安装,一直下一步)http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html2、adt-bundle-windows-x86_64-20130717.zip(下载完直接解压,解压目 阅读全文
posted @ 2013-08-01 15:10 MrBlue 阅读(2294) 评论(1) 推荐(0)
摘要:比方你有如下目录,要编译Classes目录和Code目录下所有cppsrc|-android.mk|-Classes |-A.cpp |-B.cpp |-....cpp|-Code |-E.cpp |-F.cpp那你可以这样往android.mk文件里写要编译的源文件SRC_LIST :=$(wildcard $(LOCAL_PATH)/Classes/*.cpp)LOCAL_SRC_FILES += $(SRC_LIST:$(LOCAL_PATH)/%=%)SRC_LIST :=$(wildcard $(LOCAL_PATH)/Code/*.cpp)LOCAL_SRC_F... 阅读全文
posted @ 2013-07-24 14:32 MrBlue 阅读(1085) 评论(0) 推荐(0)
摘要:前提:要打开eclipse的LogCat窗口1、保存log,先要选中eclipse的LogCat的所有行,点击保存,假设保存到了/User/mac/Desktop/log.txt2、找到你的so(确保你的so是debug版带调试信息的)所在目录,应该是你的android工程/obj/local/armeabi,假设我的是在/User/mac/Desktop/MyProj/proj.android/obj/local/armbi2、打开控制台cd到ndk的安装目录3、敲入命令 ./ndk-stack -sym/User/mac/Desktop/MyProj/proj.android/obj/lo 阅读全文
posted @ 2013-07-01 18:24 MrBlue 阅读(1360) 评论(0) 推荐(0)
摘要:转载自http://www.lifecrunch.biz/archives/202vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于. 阅读全文
posted @ 2013-06-26 16:34 MrBlue 阅读(1436) 评论(0) 推荐(0)
摘要://array 1 #include <array> 2 3 void Foo() 4 { 5 array<int,10> a; 6 generate(a.begin(),a.end(),rand); 7 sort(a.begin(),a.end()); 8 9 for (auto n:a)10 {11 cout<<n<<endl;12 }13 cout<<"sizeof(a)="<<sizeof(a)<<endl;14 }//auto 1 #include <vector> 2 阅读全文
posted @ 2013-06-17 23:46 MrBlue 阅读(882) 评论(0) 推荐(0)
摘要:首先一定要确定你所安装NDK支持c++0x(我安装的android-ndk-r8)文本打开 项目目录/proj.android/jni/Application.mk在APP_CPPFLAGS那一行最后追加上 -std=c++0x,改完之后可能这样APP_CPPFLAGS := -FRTTI -DCOCOS2D_DEBUG=1 -std=c++0xok,在代码里测试下把一下代码加入工程中试试//test.cpp#include <functional> void Test(){ //1 int r = 0; std::function<int(void)>Foo = [& 阅读全文
posted @ 2013-06-17 14:06 MrBlue 阅读(524) 评论(0) 推荐(0)
摘要:当你把proj.android工程导入到eclipse之后:问题1、src文件文件夹打个红叉,打开里面的文件,发现Cocos2dxActivity下面打个红线说明:你没有添加cocos2d-x的java库解决:右键工程->Build Path->Link Source->Browse->选择cocos2d-x目录/cocos2dx/platform/android/java/src->Folder name内随便写个名字叫cocos2dx-java->Finish问题2、Build工程时报 can‘t find NDK_ROOT(大致是这个错)说明:就是你的 阅读全文
posted @ 2013-06-07 13:24 MrBlue 阅读(462) 评论(0) 推荐(0)
摘要:2014/1/26 更新最近又发现了一个很简单的方法,其实coco2dx已经给我们提供设置loader的方法。注意:有个局限性,在非android平台下调用pEngine->executeScriptFile是不调用loader的,只有require这种才会调用loader。也就是说你直接executeScriptFile("main.lua")这个脚本不能加密,main.lua里面require的才能加密步骤如下:1、实现自己的loader(参考int cocos2dx_lua_loader(lua_State *L))#define CODE_MASK 250ex 阅读全文
posted @ 2013-06-06 19:15 MrBlue 阅读(11036) 评论(0) 推荐(1)
摘要://头文件Aclass A{ void foo(){}};//头文件Bclass B{ void foo();};void B::foo(){}//头文件Ctemplate<class T>class C{ void foo(); };template<class T>void C<T>::foo(){} 如果有两个文件同时包含头文件A,编译没问题,因为这种写法默认了foo为内联函数。如果有两个文件同时包含头文件B,编译报重复定义的符号,因为这个函数会被链接两次。如果有两个文件同时包含头文件C,编译没问题,因为类模板只有当需要实例化的时候才会被编译链接。如理 阅读全文
posted @ 2013-05-29 10:39 MrBlue 阅读(498) 评论(0) 推荐(0)