クラスにシグナルがある場合、クラスの「インターフェース」でシグナル自体を公開することは良い習慣であると考えられますか?
class MyClass
{
public:
boost::signals2::signal<void()>& SomethingHappened()
{
return m_Signal;
}
private:
boost::signals2::signal<void()> m_Signal;
};
代わりに「登録」(および場合によっては「登録解除」) 関数を書いている人を見てきました。
class MyClass2
{
public:
boost::signals2::connection RegisterHandler(std::function<void()>& handler)
{
return m_Signal.connect(handler);
}
private:
boost::signals2::signal<void()> m_Signal;
};
クラスのユーザーを私が提供する機能に制限したくないので、最初のアプローチを好みます。しかし、2番目のアプローチを好む正当な理由はありますか?