c++ - 避免在类模板中重复访问枚举的模板参数

标签 c++ templates enums

考虑一个实现容器的类模板,其中包含用于选择其存储位置的选项。

template<class T>
class Container {
public:
  enum StorageOption {A,B};
  Container(StorageOption opt_): option(opt_) {}
private:
  StorageOption option;
};

此处 StorageOption 被选为成员,因为它仅在类中使用。

现在,要实例化类,我需要重复模板参数,例如:

{
  Container<int> c( Container<int>::A );
}

有没有一种方法可以避免重复参数,同时让 StorageOption 成为成员,或者有没有更好的方法来实现该选项?

最佳答案

通常通过在基类中定义它来实现。

class ContainerBase {
public:
  enum StorageOption {A,B};
};


template<class T>
class Container : public ContainerBase{
public:
  Container(StorageOption opt_): option(opt_) {}
private:
  StorageOption option;
};

Container<int> c( ContainerBase::A );

关于c++ - 避免在类模板中重复访问枚举的模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15160557/

相关文章:

c++ - C++17 标准是否保证 union 的地址与其成员的地址相同?

c++ - 立体声模式下的错误音频输出 - FFMPEG PortAudio C++

C++:查找满足谓词的元组的第一个元素

c++ - 模板化方法的继承

java - 在 Hibernate 中保存枚举

c++ - 我的老师不像其他人那样进行类型转换。有谁知道他在做什么?

c++ - CPU变量类型

c++ - C++在运行时嵌套不同类型的查找映射

java - 通过反射提取和设置枚举值

java - 如何使用 "description"找出Java Enum的 "name"