延伸的嵌套类方法(Extending a nested class method)

2019-10-21 04:00发布

我曾经遇到过一个嵌套类的虚拟方法。

##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()

Answer 1:

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()
{
}


文章来源: Extending a nested class method