簡體   English   中英

如何從內聯模板方法返回通用向量迭代器?

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

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