gpt4 book ai didi

c++ - 将子类重写为子类

转载 作者:行者123 更新时间:2023-12-02 09:53:01 26 4
gpt4 key购买 nike

在下面的示例中如何去覆盖这样的功能?
显然,它不能按照我的方式编写,但是是否可以实现类似的功能?

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com