扩展嵌套类方法 [英] Extending a nested class method

查看:103
本文介绍了扩展嵌套类方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have encountered a virtual method in a nested class.

##classone.h

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

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

我正在子类化ClassOne,并且需要扩展method1().在这种情况下,嵌套类需要做什么?

I am subclassing ClassOne and need to extend method1(). What need's to be done with the nested class in that situation?

我尝试过的事情

##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的双重定义错误.

method1 belongs to ClassOne::InnerClass, not ClassOne. When you inherit from ClassOne, the nested class from base class becomes a member of the derived class, too, and you can reach it by qualifying with either ClassOne:: or SubClassOne::. Hence the double definition error regarding method1.

您也需要对InnerClass进行子类化.如果您仍然希望从ClassOne派生,则它看起来像这样:

You'll need to sub-class InnerClass, too. If you still wish to derive from ClassOne, it would look like this:

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

这篇关于扩展嵌套类方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆