Я написал небольшой шаблонный класс на 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 отображает ошибку «Объявление члена не найдено» для перегрузки оператора ++, даже если он определен в общедоступной части класса.
В чем проблема?
ПРИМЕЧАНИЕ. Это только часть кода, все типы, которые не объявлены в этом сегменте кода, определены в исходном файле.
PriorityQueue<...>
объявляет вложенный классiterator
? Почему только форвард-декларация? - person Deduplicator   schedule 14.06.2014IteratorType
иElementType
иPriorityQueueElement
не определены. Вы также не определяетеm_element
. Это настоящий код? - person n. 1.8e9-where's-my-share m.   schedule 14.06.2014