編集: これは、「愚かで面白くない間違い」の別のケースです。あなたは警告されました:)
ここに、私を夜更かしさせているものがあります。C++ の知識が豊富な人なら、これを機能させる方法を見つけることができるかもしれません。
template<class T>
class Base
{
virtual void Method ( T* arg ) = 0;
};
class Child : public Base<MyType>
{
void Method ( MyType* arg ) { /*blah*/ };
};
2 つのメソッドを一緒に一致させることができないため、これはコンパイルされません (少なくとも VS2008 ではコンパイルされません)。
現在、メソッド宣言で MyType の代わりに BaseType を使用して回避し、メソッドの Child 実装で BaseType を MyType にキャストします (基本クラス内の他の要素のテンプレートとして MyType が必要です)。
それでも、テンプレート化された型を直接使用できると便利です。
編集: 他のエラー (後でリストされたもの) を修正すると、すべてが機能したようです。template<class T>
元のコードの代わりにtemplate<T>
、メソッドがパブリックとしてリストされていました。投稿する前にもっと待つべきだったことを示しています。申し訳ありません。