我已经在单独的命名空间中定义了基类和派生类(这是一个要求,因为可以从单个基类派生多个类,并且根据派生类的行为,它们将被放置在单独的命名空间中。)
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);
它是否正确?
谢谢。