私が持っているとしましょう:
template<typename T>
class A {
typedef T t_type;
void done_work();
};
template<typename T>
class B {
typedef T t_type;
void do_work(){
// adds work to an asynchronous event queue, eventually T.done_work() is called
}
};
template<typename T>
class C {
typedef T t_type;
void do_work(){
// adds work to an asynchronous event queue, eventually T.done_work() is called
}
};
typedef A<B<A > > a_with_b;
typedef A<C<A > > a_with_C;
void main(int argc, char** argv){
a_with_b awb;
a_with_c awc;
}
typedef a_with_bを解決するにはどうすればよいですか?
AにはBへのコールバックがあり、BにはAへのコールバックがあるため、これを実行したいと思います。たとえば、AはB.do_work()を呼び出し、最終的にBはA.done_work()を呼び出します。さらに、これらはそれぞれ非同期呼び出しであるため、Aには他にも重要な作業があるため、B.do_work()を呼び出して、Bが「done」を返すまで待つことはできません。
AにBを参照させることができない理由は、CなどのBを置き換える他の実装が存在する可能性があるためです。