问题描述
我在嵌套类中遇到了一个虚方法.
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()
{
}
这篇关于扩展嵌套类方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!