Saya telah menulis kelas templat kecil di C++ yang mewakili antrian prioritas. Namun, saya terus mendapatkan "Deklarasi anggota tidak ditemukan" untuk semua fungsi yang saya tulis yang merupakan bagian dari kelas bersarang di dalam kelas template PriorityQueue yang seharusnya mengembalikan instance baru dari objek yang sama.
Segmen kode yang bermasalah adalah sebagai berikut:
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;
}
Dalam kasus ini, Eclipse menampilkan kesalahan "Deklarasi anggota tidak ditemukan" untuk kelebihan operator++, meskipun itu didefinisikan di bagian publik kelas.
Apa masalahnya?
CATATAN: Ini hanya sebagian dari kode, semua tipe yang tidak dideklarasikan dalam segmen kode ini ditentukan dalam file sumber.
PriorityQueue<...>
Anda mendeklarasikan kelas bersarangiterator
? Mengapa hanya deklarasi ke depan? - person Deduplicator   schedule 14.06.2014IteratorType
danElementType
danPriorityQueueElement
tidak terdefinisi. Anda juga tidak mendefinisikanm_element
. Apakah ini kode asli? - person n. 1.8e9-where's-my-share m.   schedule 14.06.2014