Я хотел бы иметь класс шаблона очереди, который может указывать внутреннюю структуру контейнера с помощью аргумента шаблона и специализировать функцию Top (поскольку разные контейнеры используют другое имя функции для доступа к переднему элементу), например следующий код:
template<class I, class C = std::queue<I>>
class Queue
{
C items;
public:
I* Top()
{
std::cout << "this is a queue" << std::endl;
return &items.front();
}
};
template<class I>
void I* Queue<I, std::priority_queue<I>>::Top()
{
std::cout << "this is a priority_queue" << std::endl;
return &items.top();
}
Однако этот фрагмент кода вызывает много ошибок компиляции. Кто-нибудь может подсказать мне, что я иду в неправильном направлении разработки класса шаблона? Спасибо.
void I*
в любом случае? И независимо от того,items
имеет тип C, и никакая магия в одной функции-члене не изменит этого. - person WhozCraig   schedule 24.10.2013