#include <iostream>
using namespace std;
class Base {
public:
Base() {};
~Base() {};
};
template<class T>
class Derived: public Base {
T _val;
public:
Derived() {}
Derived(T val): _val(val) {}
T raw() {return _val;}
};
int main()
{
Base * b = new Derived<int>(1);
Derived<int> * d = b;
cout << d->raw() << endl;
return 0;
}
現在、ポリモーフィズムの問題がいくつかあり、上記のコードはすべてを要約しています。Base クラス ポインターを作成し、そこに新しい派生テンプレート クラスのポインターを配置しました。次に、派生テンプレート クラスの新しいポインターを作成し、基本クラスのポインターが指す参照を持たせたいと考えています。Base ポインター (b) が Derived を指していても、参照を Derived クラス ポインター (d) に渡すことはできませんthere's no known conversion from Base * to Derived<int> *
。
それで、それを行うためのトリックまたは代替方法はありますか? 前もって感謝します。