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);
    }   
    }
}

现在,如果在一个完全独立的命名空间中有一些 Function 接受基类引用,我该如何传递它的派生类引用?

tryFunc(Base &b);

Derived d;
tryFunc(d);

它是否正确?

谢谢。

4

1 回答 1

1

你基本上已经弄清楚了一切,你必须someFunc在派生类的类体中声明。

传递给的方式tryFunc(Base &b)也是正确的

于 2013-01-03T16:15:01.293 回答