c++ - 条件 C++ 类成员定义
问题描述
我想根据 C++ 类中的模板参数定义一个类的两个变体。(我使用的是 C++17。)
例如,如果模板参数bool flag
为真,我希望类有一个成员:
Class1 foo;
如果flag
如果为假
Class2 bar;
类定义也会有一些逻辑变化并使用foo
or bar
。我可以使用继承来实现这一点,但我正在探索是否有另一种方法。似乎https://en.cppreference.com/w/cpp/types/conditional可能会有所帮助,但我不确定。我也可以同时拥有两个成员并在任何给定对象中使用其中一个,但这似乎很浪费,必须有更好的方法。请注意,如果特定解决方案仅允许我换出类而不是名称(可能有条件?),我不一定需要以不同的方式命名成员。
解决方案
如果您可以为两个版本使用相同的成员名称,那么这很简单:
template <bool flag>
struct Foo {
std::conditional_t<flag, Class1, Class2> foo;
};
推荐阅读
- ios - Xamarin 表单:从 Xamarin 表单应用程序启动 IOS 应用程序的问题(输入 URL 无效)
- android - 与解析功能斗争
- redis - Redis自动递增id作为唯一键可以吗?
- reactjs - AXIOS 请求方法更改为 'OPTIONS' 而不是 'GET'
- python - 从 tkinter Text 小部件中作为文本存在的文件名(仅基名)获取文件详细信息(完整文件路径)
- android - 从另一个片段打开片段
- javascript - window.addEventListener('load',... 没有在 Safari 上触发?
- php - 您可以在两个表之间执行“INSERT SELECT WHERE”吗?
- c - 用 LD_PRELOAD 覆盖 getuid 不能直接工作,但在 gdb 中工作
- swift - 在无法访问以编程方式创建的 UILabel 时定义 #selector 方法