では、最初にサンプル コードを示します。これは、コンパイルされませんが、私がやろうとしていることを伝えようとする私の試みです:
#include <iostream>
template <class T>
class Base
{
public:
virtual void my_callback() = 0;
};
class Derived1
: public Base<int>
, public Base<float>
{
public:
void my_callback<int>()
{
cout << "Int callback for Derived1.\n";
}
void my_callback<float>()
{
cout << "Float callback for Derived\n";
}
};
class Derived2
: public Base<int>
, public Base<float>
{
public:
void my_callback<int>()
{
cout << "Int callback for Derived2.\n";
}
void my_callback<float>()
{
cout << "Float callback for Derived2\n";
}
};
int main()
{
{
Derived1 d;
Base<int> * i_p = d;
Base<float> * i_f = d;
i_p->my_callback();
i_f->my_callback();
}
{
Derived2 d;
Base<int> * i_p = d;
Base<float> * i_f = d;
i_p->my_callback();
i_f->my_callback();
}
//Desired output:
// Int callback for Derived1.
// Float callback for Derived1
// Int callback for Derived2.
// Float callback for Derived2
system("Pause");
}
だから、私がやろうとしているのは、派生クラスをさまざまなコールバックリストに自動的に接続する一種のラッパークラスを継承することです。派生クラスの特定のインスタンスをリストに接続する必要があります。ご覧のとおり、派生クラスの作成の一環として、「ユーザー」がコールバック関数を作成する必要があります。
別の構文を使用する必要があるかもしれませんが、これは機能するはずです。うまくいかない場合、何か提案はありますか?