Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何定义使用枚举模板化的容器_C++_Templates_Vector - Fatal编程技术网

C++ 如何定义使用枚举模板化的容器

C++ 如何定义使用枚举模板化的容器,c++,templates,vector,C++,Templates,Vector,我需要创建一个容器,其中包含整数并使用enum模板化 enum Color{R,G,B}; template<class Color C,//class before color will be removed template <class, class = allocator<int>> class Container> class MyClass { Container<int> buffer; } enum Colo

我需要创建一个容器,其中包含整数并使用enum模板化

 enum Color{R,G,B};

 template<class Color C,//class before color will be removed
 template <class, class = allocator<int>> class Container>
 class MyClass
 {
    Container<int> buffer;
 }
enum Color{R,G,B};
模板
类MyClass
{
集装箱缓冲器;
}
我需要创建向量并从中列出。比如:

 MyClass<Color::R, std::list> mbs
 MyClass<Color::G, std::vector> mbs

 //wrong number of template arguments (1, should be 2)
 MyClass<Color C, vector> v1;

 //for contaner
 Container<int>::iterator nth = buffer.begin()
MyClass mbs
MyClass mbs
//模板参数数量错误(1,应为2)
MyClass v1;
//康塔纳
容器::迭代器n=buffer.begin()
您正在寻找

对于您的容器,其定义如下:

template<Color C, 
         template<class, class = std::allocator<int>> class Container>
class MyClass{
   Container<int> buffer;
   // ...
};
模板
类MyClass{
集装箱缓冲器;
// ...
};
您可以这样创建一个实例:

MyClass<Color::R, std::vector> instance;
MyClass实例;
您可以像这样创建迭代器:

typename Container<int>::iterator iter = buffer.begin();
typename容器::迭代器iter=buffer.begin();

typename
是必需的,因为
iterator
是一个

是的,这是非类型模板参数的一般形式。请不要根据答案修复代码。这使你的问题毫无意义。事实上,我投票关闭它,因为我不知道如何恢复编辑,使其成为一个有意义的问题。我可以问你现在如何创建一个对象吗?@ArtemTarasenkov:tobi303是对的;当你根据答案编辑你的问题时,它会使问题变得毫无意义,答案变得毫无意义。我已经尝试重建你原来的问题+迭代器。是的,效果更好,谢谢你,但我现在如何创建它的对象?@ArtemTarasenkov:查看我的更新。您需要在模板参数中指定特定的
颜色
;它不能是变量。请以这种方式更改它,并使用控制台输出更新我的问题,效果良好!谢谢最后一个问题。。。如何从这个容器中获取迭代器?我已经像往常一样用
buffer.begin()
buffer.end()
更新了这个问题。@ArtemTarasenkov。有什么问题吗?