因为Unity3D项目需要,所以,需要用到DLL来封装一些功能。
常年使用Unity3D,c++基本忘记的差不多了。
现在又要开始第N轮的复习。还有一个原因就是,貌似Unity3D,又走向il2cpp的趋势。。所以,还是赶紧抓回c++吧。
/************************************** 多余的介绍 完成 **************************************/
头文件:ClassTest.h
typedef int(*pInt)(int);//定义函数指针,加别名才能放在vector中
class ClassTest
{
private:
map<string, pInt> map_pInt;//map容器,,其实,使用原因,主要是因为要复习。。
public:
void AddCallBack(string key, pInt callback);
void UseCallBack(string key, int data);
};
源文件:ClassTest.cpp
void ClassTest::AddCallBack(string key, pInt callback)
{
map_pInt.insert(pair<string, pInt>(key, callback));
}
void ClassTest::UseCallBack(string key, int data)
{
cout << "InputParam:" << data << "\t结果:" << map_pInt[key](data) << endl;
}
测试文件:main.cpp
//测试函数
int add(int a)
{
return a*a;
}
int main()
{
ClassTest* classTest= new ClassTest();
eventmgr->InitCallBack("callback", add);
for (int i = 0; i < 10; i++)
{
eventmgr->UseCallBack("callback", i);
}
}
运行结果:
省略,自己测试哈。。博猪是懒逼!!