64,683
社区成员
发帖
与我相关
我的任务
分享
using namespace std;
template<class t> class queue;
template<class t> class queue_item{
queue_item(t val=0):item(val),next(0){}
t item;
queue_item<t>* next;
friend class queue<t>;
};
template<class t> class queue{
public:
queue():head(0),tail(0){}
bool empty(){return head == 0;}
t& front(){return head->item;}
void push(const t &val){
queue_item<t> *p = new queue_item<t>(val);
if(empty())
head=tail=p;
else{
tail->next = p;
tail = p;
} }
void pop(){
queue_item<t> *p = head;
head = head->next;
delete p;
}
~queue(){destroy();}
private:
queue_item<t> *head,*tail;
void destroy();
};
template<class t> void queue<t>::destroy(){
while(!empty())
pop();
}
//我想把push和pop函数转门做一个const char*型的特化模板,该怎么做啊,帮我做个好吗,最好类里面定义和类外面定义的两种都让我看看,特化类型是template<>void push<const char*>(const char* p);我知道怎么做不知道放在类里面的格式
void push(const t* val){
queue_item<const t*> *p = new queue_item<const t*>(val);
if(empty())
head=tail=p;
else{
tail->next = p;
tail = p;
}
}
#include<iostream>
template<typename T>
class Test
{
public:
void f();
};
template<typename T>
void Test<T>::f()
{
std::cout<<"Test<T>::f()"<<std::endl;
}
template<>
void Test<int>::f()
{
std::cout<<"特化版本的f()"<<std::endl;
}
int main()
{
Test<int> obj;
obj.f();
system("pause");
return 0;
}
template<>class queue<const char*>{
public:
void push(const char*)
{
cout<<"char*"<<endl;
}
};