テンプレートの継承に小さな問題があります。
テンプレートを使用してインターフェイス クラスを作成する場合:
template<typename Data>
class InterfaceClass {
private:
public:
virtual Data* foo() = 0; //some function that returns our template type
}
次に、これの実装を作成します。
template<typename MoData>
class Implementation : public InterfaceClass<MoData> {
private:
public:
MoData* foo() { MoData* ptr = NULL; return ptr; } //some implementation
}
コンパイラでこれが機能するのに問題があるようです。これは合法ではありませんか?