我在嵌套类中遇到过虚方法。
##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()
答案 0 :(得分:3)
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()
{
}