在下面的示例中如何去覆盖这样的功能?
显然,它不能按照我的方式编写,但是是否可以实现类似的功能?
class Foo
{
public:
class Kid
{
public:
virtual void DoSomething();
};
};
class FirstBar : public Foo
{
public:
void Foo::Kid::DoSomething() override;
};
class SecondBar : public Foo
{
public:
void Foo::Kid::DoSomething() override;
};
最佳答案
我的看法-您的酒吧希望拥有自己的Kids
,并正确继承:
#include<iostream>
class Foo
{
public:
class Kid
{
public:
virtual void DoSomething() {std::cout<<"Kid!\n";}
};
};
class FirstBar : public Foo
{
public:
class Kid : Foo::Kid {
public:
void DoSomething() override {std::cout<<"Kid Bar 1!\n";}
};
};
class SecondBar : public Foo
{
public:
class Kid : Foo::Kid {
public:
void DoSomething() override {std::cout<<"Kid Bar 2!\n";}
};
};
int main() {
Foo::Kid().DoSomething();
FirstBar::Kid().DoSomething();
SecondBar::Kid().DoSomething();
return 0;
}
请注意,除非Foo
定义为Kid
,否则不需要从protected
继承,但是我保留了继承,以防因其他原因而有意义。关于c++ - 将子类重写为子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62782682/