Sim*_*ott 3 c++ design-patterns
我希望一个通用的可重用类能够执行回调.我通常使用虚函数来执行此操作:
通用类:
class LibraryClass
{
private:
virtual void SomeCallback(){}
};
Run Code Online (Sandbox Code Playgroud)
使用泛型类的代码:
class AppClass;
class LibraryClassWrapper: public LibraryClass
{
public:
LibraryClassWrapper(AppClass& appClass):appClass_(appClass){}
private:
virtual void SomeCallback();
AppClass& appClass_;
};
class AppClass
{
public:
AppClass():libraryClassWrapper_(*this){}
void handleCallbackFromLibraryClass()
{
std::cout << "Handling callback" << std::endl;
}
private:
LibraryClassWrapper libraryClassWrapper_;
};
void LibraryClassWrapper::SomeCallback()
{
appClass_.handleCallbackFromLibraryClass();
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一个非常多的样板,只是为了连接一个回调.另一种方法是使用仿函数,它可能更清洁一些.
但在我看来,在编译时已经知道了很多.这可以简化,以便在编译时解决回调吗?