我有一个函数,其中“T”可以是队列或堆栈。目前对于我拥有的函数签名:
template <class T>
void foo(T<string> baa){
//do something
}
在 foo 中我想调用 T.pop() 但我不能这样做。
然后我写了两个版本的pop,一个用于队列,一个用于堆栈。
string bar(stack<string> & baa){
string t=baa.top();
baa.pop();
return t;
}
string bar(queue<string> & baa){
string t=baa.front();
baa.pop();
return t;
}
然后我尝试这样做,但它不起作用。我该怎么做?
template <class T>
void foo(T<string> baa){
//do something
string baz=bar(baa);
}
编辑:我忘记了 top() 只是删除了顶部元素。我现在编辑了代码片段以反映这些更改。但是它仍然无法正常工作。