如何解决C ++无法使用堆栈模板调用函数
请告诉我可能是什么问题。我有两个自己的堆栈类(stackm和stackl),以及堆栈排序功能:
template <class TStack>
void quick_sort_stack(TStack &s,TStack L,TStack G,TStack E) {
// Sort stack
}
template <typename T>
void quick_sort_stack(stackm<T> &s) {
quick_sort_stack(s,stackm<T>(s.size()),stackm<T>(s.size()));
}
template <typename T>
void quick_sort_stack(stackl<T> &s) {
quick_sort_stack(s,stackl<T>(),stackl<T>());
}
它有效。但是当我尝试对std :: stack
做同样的事情时template <typename T>
void quick_sort_stack(std::stack<T> &s) {
quick_sort_stack(s,std::stack<T>(),std::stack<T>());
}
我遇到了错误:
(no matching function for call to quick_sort_stack(std::stack<int> &,std::stack<int>,std::stack<int>)):
为什么会这样,我该如何解决?
解决方法
我有一个这样的结构:
template <typename T>
void quick_sort_stack(stackm<T> &s) {
quick_sort_stack(s,stackm<T>(s.size()),stackm<T>(s.size()));
}
template <typename T>
void quick_sort_stack(stackl<T> &s) {
quick_sort_stack(s,stackl<T>(),stackl<T>());
}
template <typename T>
void quick_sort_stack(stack<T> &s) {
quick_sort_stack(s,stack<T>(),stack<T>());
}
template <class TStack>
void quick_sort_stack(TStack &s,TStack L,TStack G,TStack E) {
// Sorted function
}
将排序功能移到其余位置后,程序将启动:
template <class TStack>
void quick_sort_stack(TStack &s,TStack E) {
// Sorted function
}
template <typename T>
void quick_sort_stack(stackl<T> &s) {
quick_sort_stack(s,stackl<T>());
}
// Another...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。