首页 > 编程语言 > 详细

C++绑定私有函数扩展(使用模板类)

时间:2019-03-30 15:27:36      阅读:135      评论:0      收藏:0      [点我收藏+]

class FuncRoot()
{
public:
virturl void RunAFun()=0;
}
template <typename T>
class BindFunc:public FuncRoot
{
Publib:
typedef int (T::*MumberFuncType)();
TestB(TestA* o,MumberFuncType fn):
object_(o)
,func_(fn)
{
}

virtual void RunAFun() override
{
(object_->*func)();
}
private:
MumberFuncType func_;
T* object_;
};

class TestB
{
Publib:
TestB(){}

void RunAFun()
{
func->RunAFunc();
}

void RegistAFunc(FuncRoot* func)
{
func_=func;
}

private:
FuncRoot* func_;
};

class TestA
{
public:
TestA()
{}

void RegistFunToB(TestB* b)
{
b->RegistAFunc(this,&TestA::func);
}

private:
int func()
{
int i=100;
return i;
}
};

int main()
{
TestA a;
TestB b;

a.RegistFunToB(&b);
b.RunAFun();
return 0;
}

C++绑定私有函数扩展(使用模板类)

原文:https://www.cnblogs.com/shanshisanren/p/10627330.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!