イベントの種類とパラメータと戻り値をひとまとめにしてクラスで
表現しようと思い、以下のようにしてみました。
template <class paramType, class resultType>
class Event {
int type_;
paramType param_;
mutable resultType result_;

public:
// paramType を取るコンストラクタとかもろもろ...
const paramType& Param() const { return param_; }
const resultType& Result() const { return result_; }
void SetResult(const resultType& result) const { result_ = result; }
};
イベントを受け取るハンドラー側は、
void Handler(const Event& event) {
resultType foo;
// ... 処理 ...
event.SetResult(foo);
}
となるのですが、あんまり直感的じゃないですよね。かと言って、
ハンドラーを void Handler(Event& event); とするのは気持ち悪いなぁ
というところで悩んでます。妙案はござらぬか。