gpt4 book ai didi

c++ - 基于宏定义具有多种类型的一个变量的可能性

转载 作者:行者123 更新时间:2023-11-30 00:45:59 25 4
gpt4 key购买 nike

我想知道是否可以这样做:

class MyClass
{
public:
MyClass();
...

#if defined USE_TYPE_ONE
static TypeOne myVariable;
#else
static TypeTwo myVariable;
#endif USE_TYPE_ONE
};

原因是我有两个类,TypeOneTypeTwo,具有相同的函数变量但不同的实现和我不想在每个调用 myVariable 的地方都使用宏。

编辑

感谢及时的评论和回答。我不得不提到 MyClass 已经在不同的类中使用了很多。这就是为什么我想避免模板。因为即使使用具有默认模板参数类型的模板类,对于我使用 MyClass 而不需要 TypeOne 的其他地方,我也必须使用 <>(更改许多其他地方)。

最佳答案

您可以按照建议使用模板,但如果您只需要根据条件在两种类型之间切换并且您可以访问 C++11 <type_traits> (否则考虑更新你的编译器),然后你可以使用 std::conditional :

#include <type_traits>

constexpr bool USE_TYPE_ONE = true;

struct TypeOne { };
struct TypeTwo { };

class MyClass {
using Type = std::conditional<USE_TYPE_ONE, TypeOne, TypeTwo>::type;
static Type myVariable;
};

关于c++ - 基于宏定义具有多种类型的一个变量的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40426623/

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