【发布时间】:2013-10-24 07:57:28
【问题描述】:
我想要一个 Queue 模板类,它可以通过模板参数指定内部容器结构并专门化 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 类型,单个成员函数中没有任何魔法可以改变这一点。 -
哎呀...对不起...这是一个错字。 Top() 函数的返回类型应该是 I* 而不是 void I*。
标签: c++ templates containers specialization