簡體   English   中英

C++ 無法使用堆棧模板調用函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM