我想了解模板是如何工作的,而且我已经想出了这个问题。现在,我完全意识到它可以使用多态性来解决,但我很好奇,看看它是否可以通过使用模板来解决。情况如下:使用可变模板的成员的类
假设我有两种类型的队列,其被定义如下:
#include <queue>
template <typename GenType, typename Comparator>
class Priority
{
public:
Priority()
{ }
~Priority()
{ }
void insert(GenType const& t)
{ mQueue.push(t); }
private:
std::priority_queue<GenType, std::vector<GenType>, Comparator> mQueue;
};
template<typename GenType>
class FIFO
{
public:
FIFO()
{ }
~FIFO()
{ }
void insert(GenType const& t)
{ mList.push_front(t); }
private:
std::deque<GenType> mList;
};
而现在,我有一个类,可以使用Queue
或FIFO
(或任何其它类型队列中的)所示:
// I'm not sure that this is how it should be declared...
template <typename GenType,
template<typename, typename...> class List>
class User
{
public:
User()
{ }
~User()
{ }
void add(GenType const& t)
{ mList.insert(t); }
private:
// This line gives an error.
List mList;
};
因为它的立场,标线给出了一个错误,这我理解,因为我还没有实际传递任何模板参数List
。问题是我不知道如何解决这个错误。
给予一定的情况下,使用情况下这是能够有User
类采取任何类型的队列,并可以像这样使用:
User<int, FIFO> u1;
// Not sure if it is this way:
User<int, Priority, std::less<int>> u2;
// Or this way:
User<int, Priority, std::less> u2;
如何解决这个任何建议问题?
@ Rakete1111为什么是的,是的。我现在就解决它。 – Mauricio