gpt4 book ai didi

c++ - 将实现注入(inject)到 C++ 中的类中

转载 作者:行者123 更新时间:2023-11-30 02:46:33 25 4
gpt4 key购买 nike

考虑以下示例:

class A{
public: virtual void hello() = 0;
};

class B: public A{};

class C {
public: void hello(){
cout<<"Hi";
}
};
class D: public B, public C{};

我的想法是,我想通过Chello的实现注入(inject)到D中。这似乎不起作用,除非我也让 C 继承自 A。由于这导致菱形继承(钻石问题),我最终使用虚拟继承。

在不干扰抽象类 AB 的情况下,是否有任何替代方法可以将实现强制到派生类中?

编辑:我想要一个不需要在 D 中显式编写代码的解决方案。这是因为,我有许多像 D 这样的类具有相同的实现,这正是我想将该实现推到某个类的原因,这些类都继承自该类。

最佳答案

您可以将 C 重写为继承自其模板参数的模板类,然后从 C 派生 D。

template <class Base>
class C : public Base {
public: void hello(){
cout<<"Hi";
}
};
class D: public C<B> {};

关于c++ - 将实现注入(inject)到 C++ 中的类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23454568/

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