C++ 如何定义使用枚举模板化的容器
我需要创建一个容器,其中包含整数并使用enum模板化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 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。有什么问题吗?