0

以下にエラーがあります

エラー LNK2001: 未解決の外部シンボル "public: virtual void __thiscall C::Foo(void)" (?Foo@C@@UAEXXZ)

基本的C::Test()に自動的に実装を継承することはできずB::Test()、C ++で毎回明示的に記述する必要がありますか?

class A
{

public:  
    virtual void Foo()=0;
    virtual void Test()=0;

};

class B: public A 
{
public: 
    virtual void Foo();
    virtual void Test()=0;

};

void B::Foo()
{

}



class C: public B
{
public:
    void Foo();
    void Test();
};



void C::Test()
{
}
4

3 に答える 3

0

A::Test() を純粋仮想化したので、子クラスはそれを実装する必要があります。

それがA::Test()=0構文の意味です。

を削除=0し、親クラスに実装を提供する場合、子クラスに実装する必要はありません。

于 2013-05-21T18:47:02.847 に答える