gpt4 book ai didi

c++ - 如何正确编写模板模板参数?

转载 作者:行者123 更新时间:2023-11-30 04:04:37 27 4
gpt4 key购买 nike

我正在尝试使用模板为任何 C++ 集合制作适配器。

我需要使用模板模板参数,这样我就可以像这样使用适配器:

CollectionAdapter<std::vector<int>> a;

而不是像:

CollectionAdapter<std::vector<int>,int> a;

同时需要两个模板参数。

我写了这个类:

template <
template <class U> class T
>
class CollectionAdapter {

public:
typedef T<U> ThisCol;
typedef void iterator;

CollectionAdapter() {}

bool add(ThisCol& c,const U& i);
bool remove(ThisCol& c,const U& i);
U& getByIndex(int i);
ThisCol instantiate();
iterator getIterator(ThisCol& c);

};

但是,visual studio 编译器向我抛出此错误:

error C2065: 'U' : undeclared identifier

对于这一行:

typedef T<U> ThisCol;

我做错了什么?

最佳答案

我认为您不需要模板模板参数。您可以简化代码:

template <class T>
class CollectionAdapter
{

public:
typedef T ThisCol;
typedef typename T::value_type value_type;

//typedef void iterator; // what?? did you mean void*?
typedef void* void_iterator; // but not sure what the use of this is.

// you might need the container's iterator types too
typedef typename T::iterator iterator
typedef typename T::const_iterator const_iterator


CollectionAdapter() {}

bool add(T& c,const value_type& i);
bool remove(T& c,const value_type& i);
value_type& getByIndex(int i);
const value_type& getByIndex(int i) const;
ThisCol instantiate();
iterator getIterator(T& c);

};

关于c++ - 如何正确编写模板模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670746/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com