我想了解模板是如何工作的,而且我已經想出了這個問題。現在,我完全意識到它可以使用多態性來解決,但我很好奇,看看它是否可以通過使用模板來解決。情況如下:使用可變模板的成員的類
假設我有兩種類型的隊列,其被定義如下:
#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