【发布时间】:2019-01-09 03:51:21
【问题描述】:
我想给模板参数一个默认类型和值。该参数并没有真正使用,它仅与区分类实例有关。我想用这个机制来给班级一把钥匙。
我正在尝试这样的事情,但编译器不喜欢它
template<typename K = int>
template<typename T, K Key = K(0)>
class DataAction : public Action
{
// ...
};
键入T 为我保存数据。 Key 类型具有一定的价值,可以方便地使用 enum class 类型,如果未分配,则应默认为 int 0。
以下将起作用。
template<typename T, typename K = int, K Key = K(0)>
class DataAction : public Action
但它需要我先定义类型,然后定义值,这不太好。
auto instance = DatatAction<int, SomeEnumType, SomeEnumType::SomeKey>();
目的是用户可能希望使用具有相同数据类型T 的多个DataAction 类实例。为了能够在 dynamic_cast 中区分它们(无论如何都是必需的),使用了额外的键类型。
【问题讨论】:
-
好的,似乎是 C++17 解决的问题,但不是我坚持的 C+11。 stackoverflow.com/questions/48608830/…
标签: c++ templates types arguments default