[英]How do I return a Generic Vector Iterator from an Inline Template method?
好。 如問題所述,我有一個內聯模板方法,該方法將Iterator返回到通用向量。
注意:我知道我應該將實現更改為std :: find,但這不是我面臨的問題。
#include <vector>
template<typename T>
class List : public std::vector<T>
{
public:
List();
~List();
bool Contains(T object);
void Remove(const T& object);
private:
typedef typename std::vector<T>::iterator iterator;
typename std::vector<T>::iterator IteratorOf(const T& object);
};
template<typename T>
inline typename std::vector<T>::iterator List<T>::IteratorOf(const T&
object)
{
if (this->empty())
return nullptr;
else
{
for (typename std::vector<T*>::iterator iter = this->begin();
iter != this->end();
iter++)
{
if (*object == *iter)
return iter;
}
}
return nullptr;
}
當我嘗試運行它時,會引發無數的編譯器錯誤。
我似乎已經嘗試了所有方法,但是這種方法根本不受歡迎。
開始想知道返回通用迭代器是否存在問題。
對眾多編譯器錯誤的實際答案是與該特定問題完全無關的答案。
您不能在頭文件之外定義模板化方法
Visual Studio會拋出整個HEAP錯誤,使您擺脫了一個相對容易解決的難題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.