扩展嵌套类方法

时间:2014-10-19 11:58:14

标签: c++ oop inner-classes nested-class

我在嵌套类中遇到过虚方法。

##classone.h

class ClassOne: {
public:
  class InnerClass{
  public:
      virtual void method1();
      ...

##classone.cpp
void ClassOne::InnerClass::method1()
{
...
}

我是ClassOne的子类,需要扩展method1()。在那种情况下,嵌套类需要做些什么?

我尝试了什么

##subclassone.h

class SubClassOne: public ClassOne{
public:
    virtual void method1();

##subclassone.cpp

void SubClassOne::InnerClass::method1()
{
##New implementation
}

但这会产生multiple definition of ClassOne::InnerClass::method1()

1 个答案:

答案 0 :(得分:3)

method1属于ClassOne::InnerClass,而非ClassOne。从ClassOne继承时,基类中的嵌套类也会成为派生类的成员,您可以通过使用ClassOne::SubClassOne::进行限定来达到它。因此,关于method1的双重定义错误。

您还需要子类InnerClass。如果您仍希望从ClassOne派生,它将如下所示:

class ClassOne {
public:
    class InnerClass {
    public:
        virtual void method1();
    };
};

void ClassOne::InnerClass::method1()
{
}

class SubClassOne : public ClassOne {
    class DerivedInnerClass : InnerClass { // 
        virtual void method1();
    };
};

void SubClassOne::DerivedInnerClass::method1()
{
}