[英]C++ Cannot call function with stack template
請告訴我可能是什么問題。 我有 2 個自己的堆棧類(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()), stackm<T>(s.size()));
}
template <typename T>
void quick_sort_stack(stackl<T> &s) {
quick_sort_stack(s, stackl<T>(), 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>(), std::stack<T>());
}
我收到錯誤:
(no matching function for call to quick_sort_stack(std::stack<int> &, 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()), stackm<T>(s.size()));
}
template <typename T>
void quick_sort_stack(stackl<T> &s) {
quick_sort_stack(s, stackl<T>(), stackl<T>(), stackl<T>());
}
template <typename T>
void quick_sort_stack(stack<T> &s) {
quick_sort_stack(s, stack<T>(), 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 L, TStack G, TStack E) {
// Sorted function
}
template <typename T>
void quick_sort_stack(stackl<T> &s) {
quick_sort_stack(s, stackl<T>(), stackl<T>(), stackl<T>());
}
// Another...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.