Я хотел бы иметь класс шаблона очереди, который может определять внутреннюю структуру контейнера с помощью аргумента шаблона и специализировать функцию Top (поскольку другой контейнер использует другое имя функции для доступа к элементу front) например, следующий код:Функция класса частичная специализация с шаблоном аргументом
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();
}
Однако этот кусок кодов вызывает множество ошибок компиляции. Кто-нибудь может дать мне подсказку, что я пойду в неправильном направлении разработки класса шаблонов? Благодарю.
Что именно это 'пустота I * 'равно ?, и независимо,' 'деталей имеет тип С, и никакой магии в одной функции члена не будет изменить это. – WhozCraig
К сожалению ... извините ... это опечатка. Возвращаемый тип функции Top() должен быть I * вместо void I *. – Elliott