我正在设计一个类来接收 C++ 中的回调。到目前为止,这是我的代码:
template <class T, typename K = void, typename P = void>
class Callback {
private:
typedef K (T::*Callback)(P*);
Callback c;
T* ptr;
P* data;
public:
Callback(T* _thisPtr, Callback _funcPtr, P* pp) { ptr = _thisPtr; c = _funcPtr; data = pp; };
virtual void execute() { (ptr->*c)(data); };
};
此代码有效,但现在我想要更多的灵 active 。如您所见,这适用于使用至少一个 P* 类型参数定义的方法。我想要一个类来管理可变参数列表。这里的一个限制是我不能使用 C++11,因为我必须使用 gcc 4.4,有什么提示吗?
最佳答案
构建一个通用的、多态的、快速的、安全的、通用的函数包装器并不是一件容易的事。
因此,如果 C++11 std::function
不可用,我会去 boost::function
.
它只有标题,并且有很好的文档。此外,您可以轻松切换到 std::function
。
真的,它会节省您几天的调试时间。您可以在 SO 上看到大量与 “我的 Callback
类中存在错误,为什么?” 相关的问题(请参阅右侧的“相关”部分。 ..)
关于c++ - C++中的回调模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25280389/