扩展嵌套类方法

Extending a nested class method

本文关键字:类方法 嵌套 扩展      更新时间:2023-10-16

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

##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::限定来访问它。因此产生了关于CCD_ 10的双重定义错误。

您还需要对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()
{
}