我在大型代码库中定义了两个类A和B。我想创建一个表示“A或B”的类型别名。请注意,此类在运行时永远不会从A切换为B(反之亦然)。我怎样才能做到这一点?
我想到了简单地创建一个空类AorB并使A和B都从它派生的想法。但是,我非常希望不必修改A或B。
我曾考虑使用联合,但是从内存的 Angular 来看这似乎很浪费,因为这为最大的类保留了空间。
为了更清楚一点,以下代码说明了我的问题:
class A;
class B;
//typedef AorB = A || B //<- how can I do sthg like that ?
class C {
AorB myAorB; // once this object is set, it cannot change its underlying type (it stays an A or a B)
};
最佳答案
您想使用 std::conditional
,例如
#include <type_traits>
constexpr bool useAOrB() { /* Some actual logic here... */ return true; }
class C {
std::conditional_t<useAOrB(), A, B> myAorB;
};
关于c++ - 如何在C++中为多个类创建别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56218078/