gpt4 book ai didi

c++ - "dual inheritance"指针

转载 作者:搜寻专家 更新时间:2023-10-30 23:58:23 27 4
gpt4 key购买 nike

因此,A* 指针可以指向任何具有基 A 的对象,而 B* 指针可以指向任何具有基 B*。有没有办法创建一个只能指向以 AB 为基础的对象的指针?

我还希望它是我可以存储为类成员的东西(也许是智能版本),而无需将该类设为模板类。

编辑:

@KerrekSB 在下面询问这是什么意思。基本上我想制作一些纯虚拟基类(即接口(interface)),比如 printableflyablesomething_else_able 等。

然后我可能有一个新类,它的构造函数需要一些既 printableflyable 的东西。如果它只是一个或另一个,您可以将它存储为(智能)指针并让多态性处理其余部分,但我正在尝试找出如果该类同时使用两个基数时如何做到这一点。

最佳答案

当然,您可以使用类型特征:

#include <type_traits>

template <typename T, typename A, typename B> struct has_two_bases
: std::integral_constant<bool, std::is_base_of<A, T>:: value &&
std::is_base_of<B, T>:: value> { }

用法:

static_assert(has_two_bases<T, A, B>::value, "Not a good type");
T * p;

关于c++ - "dual inheritance"指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20724322/

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