次のようなテンプレート化された抽象クラスをインスタンス化したいと思います。
template <class T>
class non_sense {
public:
void virtual nonsesnse_func() = 0;
};
このクラスの整数インスタンスを作成するために、次のことを試しました。
void non_sense<int>::nonsesnse_func(){
}
次に、インスタンスを main に作成します。
non_sense<int> xx;
したがって、プログラム全体は次のようになります。
template <class T>
class non_sense {
public:
void virtual nonsesnse_func() = 0;
};
void non_sense<int>::nonsesnse_func(){
}
void main(){
non_sense<int> xx;
}
それは私には完全に理にかなっていますが、クラスが抽象的であると言って、コンパイラはそれを受け入れません。特定のテンプレートを使用してこのクラスから継承する新しいクラスを作成するルートを取りたくありません。これを作成しようとしている大きなアプリケーションに関しては、大量の書き込みになります。誰かがコンパイラがこれを拒否する理由を説明できますか?また、必要な特定のインスタンス用に新しいクラスを作成する以外に、これを回避する方法はありますか?