簡體   English   中英

C ++模板函數錯誤:變量或字段“ swapAdjacent”聲明為無效

[英]c++ template function error: variable or field 'swapAdjacent' declared void

這是我的清單課程

template <typename Object>
class List {
    public:
        class iterator {
            ...
        };
    ....
};

這是我的職責

template <typename Object>
void swapAdjacent(List<Object>::iterator & itrA, List<Object>::iterator & itrB) {

}

編譯后,發現以下錯誤

錯誤:變量或字段'swapAdjacent'聲明為無效

為什么它不起作用?

如果我將代碼更改為以下代碼,則可以正常工作

void swapAdjacent(List<int>::iterator & itrA, List<int>::iterator & itrB) {

}

我需要幫助; 為什么第一個功能不能正常工作?

這似乎是一個奇怪的編譯器錯誤,但是看起來您的問題是您需要告訴編譯器從屬名稱List<Object>::iterator命名一種類型。 您可以使用typename關鍵字執行此操作:

template <typename Object>
void swapAdjacent(typename List<Object>::iterator & itrA, 
                  typename List<Object>::iterator & itrB) {

}

這個問題有關的更多信息typename關鍵字。

為簡便起見,您可以僅將迭代器用作模板參數,這也會贏得自動扣除:

template <typename Iterator>
void swapAdjacent(Iterator & itrA, Iterator & itrB) {

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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