在类中有信号时,在类“接口”中公开信号本身是否被认为是一种好习惯?
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;
};
我更喜欢第一种方法,因为我不想将我班级的用户限制在我提供的功能上。但是,是否有充分的理由偏爱第二种方法?