0

コードをビルドして GHS マルチ コンパイラとリンクすると、問題が発生します。これはおおよそのアイデアです:

base.h -->

#ifndef base_h
#define base_h
class Base
{
    void basefncn1(); // defined in src file
    void basefncn2(); // defined in src file
    void basefncn3(); // defined in src file
}
#endif

interface.h -->

#ifndef interface_h
#define interface_h

#include "base.h"
class Interface : public Base
{
    void basefncn1();
}

#endif

派生クラス.h -->

#ifndef derived_h
#define derived_h

#include "base.h"
#include "interface.h"
class Derived : public Interface
{
    void basefncn1();
}

#endif

私が得るリンカーエラーは次のとおりです。

basefncn2() and basefncn3() is multiply defined -> Defined both in base.o and derived.o.

ヘッダー ファイルは保護されています。

私は何か間違ったことをしていますか?

編集: interface.h ファイルを変更してみました。関数は、interface.cpp で定義されます。基本的に、interface.h と派生.h には関数が定義されていません。

4

0 に答える 0