我可以并且愿意为此使用boost或std。对不起 - 我是C ++的新手。所以我创建了一个非常简单的程序,如:
#include <iostream>
#include <string>
using namespace std;
class superman
{
public:
void punch(){cout << "superman: I hit the bad guy!" << endl;};
};
int main()
{
superman clark;
clark.punch();
cin.get();
}
我想添加一个事件列表器,告诉我什么时候克拉克打了一拳,并且像“超人拳打”一样。如何将这样的事件列表器和事件函数添加到我的班级?
答案 0 :(得分:3)
您可以{/ 3}}使用
你必须声明一个类并重载她的运算符() 在uoi必须在信号上绑定类之后,通过使用connect()方法,最后,使用信号的operator()
struct HelloWorld
{
void operator()() const
{
std::cout << "Hello, World!" << std::endl;
}
};
// ...
// Signal with no arguments and a void return value
boost::signal<void ()> sig;
// Connect a HelloWorld slot
HelloWorld hello;
sig.connect(hello);
// Call all of the slots
sig();
用于在插槽中使用参数:
void print_sum(float x, float y)
{
std::cout << "The sum is " << x+y << std::endl;
}
boost::signal<void (float, float)> sig;
sig.connect(&print_sum);
sig(5, 3);