#include "stdafx.h"
#include <iostream>
#include <boost/signals2.hpp>
class CObjectA {
public:
typedef boost::signals2::signal<void ()> signal_t;
typedef boost::signals2::connection connection_t;
void notiff(){
std::cout << "in CObjectA " << std::endl;
m_created_signal();
}
connection_t add_created_slot(const signal_t::slot_type& subscriber)
{
return m_created_signal.connect(subscriber);
}
private:
signal_t m_created_signal;
};
class CObjectB{
public:
CObjectB();
void slotFunc(void);
void single(void){
MyObject.notiff();
}
private:
CObjectA MyObject;
};
void CObjectB::slotFunc(){
std::cout << "Object 666" << std::endl;
}
CObjectB::CObjectB():MyObject()
{
MyObject.add_created_slot(boost::bind(&CObjectB::slotFunc, this));
}
int main( int argc, char** argv )
{
CObjectA* apObj2=new test1;
CObjectB* pObj3=new test2;
//test1->single() //成功
test2->notiff(); //失败
return 0;
}
有什么办法也能让test2实例中的信号也能成功发射吗。
csdn的排版比较难 大家将就看。。
------解决方案--------------------
这个 不是 Qt 的 信号槽,是boost的。
CSDN 有排版的 Tag 你没有用而已。
------解决方案--------------------
信号的链接是面向类的吧
------解决方案--------------------