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

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

最佳答案

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

关于c++ - 扩展嵌套类方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26450244/

10-09 05:36