0

基本クラスと派生クラスを別々の名前空間で定義しました (これは、単一の基本クラスから複数のクラスを派生させることができ、派生クラスの動作に基づいて、それらを別々の名前空間に配置するための要件です)。

Base.h

namespace global
{

    {
    class Base
    {
    public:
        Base();
        virtual ~Base();    

        virtual int someFunc(int arg1);
    }
}

Derived.h

namespace global
{
    namespace derived
    {

    class Derived: public Base()
    {
    public:
        Derived();
        ~Derived();
    }   
    }
}

Derived.cpp

namespace global
{
    namespace derived
    {
    Derived::Derived() {}
    Derived::~Derived() {}

    int Derived::someFunc(int arg1)
    {
    //some code here
    }
    }
}

このコードをコンパイルしようとすると、次のエラーが発生します。

クラス global::derived::Derived で宣言された 'int global::derived::Derived::someFunc(int arg1)' メンバー関数はありません。

では、Derived で someFunc を再度宣言する必要がありますか?

お気に入り:

namespace global
{
    namespace derived
    {

    class Derived: public Base()
    {
    public:
        Derived();
        ~Derived();
        int someFunc(arg1 int);
    }   
    }
}

さて、完全に別の名前空間に基本クラスの参照を受け入れる関数がある場合、どうすれば派生クラスの参照を渡すことができますか?

tryFunc(Base &b);

Derived d;
tryFunc(d);

これは正しいです?

ありがとう。

4

1 に答える 1