抽象クラスを使用してC++でインターフェイスタイプを定義し、それらを具象クラスで実装しようとしています。私が実行している問題は、別のインタフェースから継承してインタフェースすることも、基本コンストラクトクラスからインプリメンテーションを継承することもできないことです。継承コンクリートクラスを使用したC++でのインターフェイスの実装
私の目標は、あまり複雑でないベースインターフェイスから継承する可能性のあるインターフェイスの階層を定義できるようにすることです。また、具体的なクラスから継承することにより、インターフェースの実装を拡張したいと考えています(下の例のTObjectAを継承しています)。
これは私が持っているものです。私が得ているエラーは "抽象クラス型のオブジェクト"ですTObjectB "は許可されていません"。私は理由を知っていると信じています。なぜなら私はTObjectBにMethodA()を実装しなかったからです。しかし、実際には、基本クラス(TObjectA)によって実装が提供され、それでもインタフェース階層(IInterfaceBはIInterfaceAから継承されます)が必要です。私はまた、継承されたすべてのインタフェースメソッドを派生したconcreateクラスで繰り返す必要はありません。これどうやってするの?あなたのクラス階層、TObjectB
で
class IInterfaceA
{
public:
virtual void MethodA() = 0;
};
class IInterfaceB : IInterfaceA
{
public:
virtual void MethodB() = 0;
};
class TObjectA : public IInterfaceA
{
public:
void MethodA() { cout << "Method A"; }
};
class TObjectB : public TObjectA, public IInterfaceB
{
public:
void MethodB() { cout << "Method B"; }
};
void TestInterfaces()
{
IInterfaceB* b = new TObjectB(); // error: object of abstract class type "TObjectB" is not allowed
b->MethodB();
delete b;
}
仮想基本クラスが必要です。例えば。 [参照してください](http://stackoverflow.com/questions/4605556/when-virtual-inheritance-is-a-good-design/4606206#4606206) –