私はイベント処理システムをコーディングしています(オブザーバーパターンに従います...)。イベントクラスを伝播または拡散するための最良の方法を知りたいのですが、次のようになります。
class Event{
public:
Event(int code);
virtual ~Event();
int getCode() const;
private:
int code;
};
ポインタを介して(ヒープ割り当て)またはインスタンスとして(スタック割り当て)送信する方がよいかどうかの詳細。
Event e(1);
notifyAll(e);
vs
Event * e = new Event(1);
notifyAll(e)
私はそれが本当に一般的な質問であることを知っています、そして私は一般的なケースのための提案されたガイドラインを知っています、しかし私はパフォーマンス、最適化、スレッドセーフなどの世話をするイベント処理の特定のケースで知りたいです。
私の考えは、クラスが単なるPODであることがわかったスタック割り当てを介して送信し、ライフ管理の問題を回避することです(またはスマートポインターを使用します)。一方、私のアプリではイベント伝播ツリーが非常に大きくなる可能性があるため、問題になる可能性があります。
ありがとうございました。(たとえば、qtほど複雑ではない、優れた実装を知っている場合は、それを書き留めてください)