[英]Template for callback in c++
我正在設計一個類來接收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); };
};
這段代碼有效,但是現在我想要更多的靈活性。 如您所見,這對於使用至少一個類型為P *的參數定義的方法有效。 我想要一個類來管理變量的可變列表。 這里的一個限制是我不能使用C ++ 11,因為我必須使用gcc 4.4,有什么提示嗎?
構建通用,多態,快速,安全,通用的函數包裝器並非易事。
因此,如果C ++ 11 std::function
不可用,我會選擇boost::function
。
它僅是標題,並且具有非常好的文檔。 另外,一旦您可以使用它,將很容易切換到std::function
。
確實,它將節省您數天的調試時間。 您可以在SO上看到與“我的Callback
類中有錯誤,為什么?”相關的大量問題。 (請參閱右側的“相關”部分...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.