作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 Candidate
的类,其中包含一个名为 DataUpdate()
的函数。我打算动态创建 Candidate 的许多实例,并让每个实例将其函数 DataUpdate()
作为插槽连接到 boost.signals2
信号;准备接收信号。
我在下面开发的代码给出了错误:
Error 2 error C2276: '&' : illegal operation on bound member function expression
我不确定实现预期结果的正确代码。问题似乎在于取消引用指针 candidateInstance
以获取实例的 DataUpdate()
函数的地址以传递给 signal.connect()
。有人能建议正确的方法吗?
Candidate *candidateInstance;
//INSTANTIATE CANDIDATE INSTANCE
++DataStream::ID;//increment static variable
candidatesVector.push_back(candidateInstance = new Candidate(ID));
//CONNECT DATAUPDATE() OF CANDIDATE INSTANCE
signal.connect( &((*candidateInstance).DataUpdate) );
//FIRE SIGNAL
signal(BarNumber(), DateTime(), Open(), High(), Low(), Close());
最佳答案
您应该使用bind
为成员函数创建包装器。
#include <iostream>
#include <memory>
#include <functional>
#include <boost/signals2.hpp>
class Foo
{
public:
void foo()
{
std::cout << "I'm foo() from Foo, this == " << this << std::endl;
}
};
int main()
{
auto foo_ptr = std::make_shared<Foo>();
boost::signals2::signal<void()> sig;
sig.connect(std::bind(&Foo::foo, foo_ptr));
sig();
return 0;
}
关于c++ - 使用 boost.signals2 如何将动态分配的对象连接到信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16525649/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!