【发布时间】:2013-09-20 16:44:12
【问题描述】:
当类中有信号时,将信号本身暴露在类“接口”中是否被认为是一种好习惯?
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;
};
我更喜欢第一种方法,因为我不想将我班级的用户限制在我提供的功能上。但是,是否有充分的理由偏爱第二种方法?
【问题讨论】:
标签: c++ boost signals-slots boost-signals2