我处于这样的情况:
class Callee {
public:
void request();
};
class Caller {
void call() {
Callee{}.request();
}
void invoke1(); // the implementation doesn't matter
void invoke2(); // the implementation doesn't matter
// more invoke()s
};
我想Callee::request()
请求调用其中一个Caller::invoke()
成员函数,具体取决于上下文,可以在 inCallee::request()
或 in 中计算Caller::call()
:
void Callee::request() {
// do stuff
switch (context) {
// request one of the invoke()s to be run immediately
}
// do more stuff
}
哪些解决方案会很优雅?我不想要(从最重要到最不重要):
Callee
了解 的定义Caller
;- 使用模板;
Callee
了解声明Caller
;Caller
invoke()
自行选择;
如果Callee::request()
从Caller
.