我在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 ++重载的错误,即使它已在类的公共部分中定义。
有什么问题?
注意:这只是代码的一部分,所有未在此代码段中声明的类型都在源文件中定义。
答案 0 :(得分:0)
看看用户xyz如何在ideone.com上编写一个工作示例,这可能是一个临时错误,当所有内容编译并正在工作时它应该消失。