템플릿 인수를 통해 내부 컨테이너 구조를 지정하고 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();
}
그러나이 코드는 많은 컴파일 오류를 발생시킵니다. 누군가 템플릿 클래스를 설계하는 잘못된 방향으로 가고 있다는 힌트를 줄 수 있습니까? 감사.
을 정확히 어쨌든?에 관계없이'*는'무효 무엇,'items' 타입 C의, 그리고 하나의 멤버 함수의 마법은 예정되지 않는다 그것을 바꾸는 것. – WhozCraig
죄송합니다 ... 오타입니다. Top() 함수의 반환 형식은 I * 대신 I *가되어야합니다. – Elliott