【发布时间】:2019-09-13 21:41:47
【问题描述】:
我想根据 C++ 类中的模板参数定义一个类的两个变体。 (我使用的是 C++17。)
例如,如果模板参数bool flag 为真,我希望该类有一个成员:
Class1 foo;
如果flag 为假
Class2 bar;
类定义也会有一些逻辑变化,并使用foo 或bar。我可以使用继承来实现这一点,但我正在探索是否有另一种方法。 https://en.cppreference.com/w/cpp/types/conditional 似乎有帮助,但我不确定。我也可以同时拥有两个成员并在任何给定对象中使用其中一个,但这似乎很浪费,必须有更好的方法。请注意,如果特定解决方案仅允许我交换类而不是名称(可能有条件?),我不一定需要以不同的方式命名成员。
【问题讨论】:
-
您可以使用模板专业化。
-
当您描述并寻求解决方案的帮助时,该解决方案实际上应该解决什么问题? 原来的问题是什么?为什么需要根据
bool模板使用不同的成员?也许还有其他解决方案? -
为什么不提供
Class1或Class2作为模板参数呢?为什么需要为成员变量使用不同的名称?而Class1和Class2是否有相同或相似的接口?Class1和Class2是否有任何关联?