我在嵌套类中遇到了虚方法。
##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/