私は抽象クラスを単一の、しかしいくつかのデフォルトの実装で、C++で作成したいと思います。 それを継承するすべてのクラスはデフォルトの動作を持ちますが、基本クラスのインスタンスを作成することはできません。 私は純粋なバーチャルとしてfooをマークした場合、私はそれに実装を追加することはできません。いくつかの実装を持つC++抽象クラス
class Base
{
public:
virtual void foo() =0; //Now I can't add foo implementation
};
私の解決策は純粋な仮想としてはなく、コンストラクタを隠すことでした。 純粋なクラスとしてマークすることが可能かどうか疑問に思っていますが、まだ実装されていますか?
「私の解決策は純粋な仮想としてはなく、コンストラクタを隠すことだけでした」と間違っていますか?それは完全に合理的に聞こえる。 –
純粋な仮想関数の実装を提供することに問題はありません。しかし私はジェームズに同意します、あなたの元々のアイデアはおそらく最高です。 –
おそらく、専用のコンストラクタを使用するのがよいでしょう。または、C++ 11コンパイラを使用している場合は、コンストラクタを[deleted](http://en.wikipedia.org/wiki/C++11#Explicitly_defaulted_and_deleted_special_member_functions)としてマークすることができます。 –