簡體   English   中英

C ++中的回調模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM