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