私は2つのクラス、両方のクラスを使用してインターフェイスと実装を持っている状況があります。インターフェイスの外でパブリック仮想派生クラスを使用する
class A : public virtual Interface<T>
class B : public virtual Interface<T>
class B
class A
はパブリック仮想インターフェイスの派生クラスであるため、許可されていない、内部class A
を使用しています。次のエラーが表示されます。A
の新しいクラスを作成せずに次の操作を行う方法はありますか?
class Interface
{
virtual void foo() = 0;
virtual void bar() = 0;
};
class A : public virtual Interface
{
public:
void foo(){ }
};
class B : public virtual Interface
{
public:
void bar()
{
A a;
}
};
class Implementation: public A, public B
{
public:
Implementation()
{
}
};
int main(){
Implementation impl;
return 0;
}
「A」はまだ純粋な仮想関数( 'bar')を持っているため、許可されていません。「宣言されたpublic virtual」とは何の関係もありません。 'A'をインスタンス化できるようにするには...何であれ、' bar'を実装する必要があります – donkopotamus
クラスAは「public virtual」と宣言されていません。あなたは 'クラスA'に、すべての純粋仮想関数を追加しても – immibis