class A {
void functionA();
};
class B {
A* A_;
void functionB();
};
如果在functionB()
实例之外调用class B
,如何在functionA()
实例中自动调用class B
? (指向Class A
实例的指针是class B
实例的成员)。
我正在寻找Qt中的SIGNAL / SLOT方法。
答案 0 :(得分:1)
一种选择是使用function object作为回调。在下面的示例中,B的构造函数在A实例中注册lambda function,只要调用functionA,A就会调用该实例。反过来,这个lambda只调用functionB。
#include <functional>
#include <iostream>
class A {
public:
void functionA() {
std::cout << "Function A called" << std::endl;
if (callback_) {
callback_();
}
}
void setCallback(std::function<void(void)> callback) {
this->callback_ = callback;
}
private:
std::function<void(void)> callback_;
};
class B {
public:
B(A* a) : A_(a) {
A_->setCallback([this](){this->functionB();});
}
void functionB() {
std::cout << "Function B called" << std::endl;
}
private:
A* A_;
};
int main() {
A a;
B b = B(&a);
a.functionA();
}
输出:
Function A called
Function B called
正如您在输出中看到的那样,当在main中调用a.functionA()时,也会自动调用functionB。