我在大型代码库中定义了两个类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/

10-11 22:06
查看更多