在C ++的嵌套模板类中“未找到成员声明”

时间:2014-06-14 19:06:49

标签: c++ eclipse class templates

我在C ++中编写了一个代表优先级队列的小模板类。 但是,我一直没有找到会员声明"我写的所有函数都是模板PriorityQueue类中嵌套类的一部分,它们应该返回同一个对象的新实例。

有问题的代码段如下:

template<typename PriorityType, typename DataType>
class PriorityQueue<PriorityType, DataType>::iterator {
public:
    // Default constructor
    iterator(ElementType& element) : m_element(&element) {}

    // Operator overloads
    DataType& operator*() const;
    IteratorType operator+(const IteratorType& other) const;
    iterator& operator++();
    iterator operator++(int);
    bool operator==(const iterator& it) const;
    bool operator!=(const iterator& it) const;
};

// Prefix Increment (++i) operator overload
template<typename PriorityType, typename DataType>
typename PriorityQueue<PriorityType, DataType>::iterator& PriorityQueue<
    PriorityType, DataType>::iterator::operator++() {
    this->m_element =
            (PriorityQueueElement<PriorityType, DataType>) *(this->m_element).m_next;
    return *this;
}

在这种情况下,Eclipse会显示&#34;未找到的成员声明&#34; operator ++重载的错误,即使它已在类的公共部分中定义。

有什么问题?

注意:这只是代码的一部分,所有未在此代码段中声明的类型都在源文件中定义。

1 个答案:

答案 0 :(得分:0)

看看用户xyz如何在ideone.com上编写一个工作示例,这可能是一个临时错误,当所有内容编译并正在工作时它应该消失。