0
幫我搞清楚請爲什麼我有這樣的錯誤:麻煩首先()我的地圖實現
錯誤:
<function-style-cast>: The compiler cannot cast from "const mtm::Node<mtm::MtmMap<int,int,std::less<KeyType>>::Pair> *" to "mtm::MtmMap<int,int,std::less<KeyType>>::iterator"
這些都是不同的代碼相關部分:
節點:
template <typename DataType>
class Node {
public:
DataType data;
Node<DataType> *head;
Node<DataType> *next;
public:
Node(const DataType& data) :data(data), head(nullptr) {
next = nullptr;
};
迭代:
class iterator {
private:
Node<Pair>* _ptr = nullptr;
public:
iterator(Node<Pair>* ptr = nullptr) : _ptr(ptr) { }
iterator(const iterator& itr) = default;
~iterator() = default;
iterator& operator=(const iterator&) = default;
私人MtmMap的:
private:
Node<Pair> _pairs;
iterator _it;
int _size;
代碼當誤差表明:(在MtmMap的身體)
iterator begin() const{
if (this->_size) {
this->_it = iterator(&_pairs);
}
return this->_it;
}
您是否正在嘗試使用this重新定義成員引用 - > _ it = iterator(&_pairs);? –
這是錯字,但修復後仍然是同樣的問題。問題是,儘管我使用node *變量調用迭代器ctor,但它看不到它,但出現錯誤。 –
KittyT2016
無法確定事物的範圍,並且沒有顯示足夠的代碼。也許試試'this - > _ it = :: iterator(&_ pairs);'(假設你的'iterator'是全局聲明的,但被'std :: map'中的'iterator'隱藏, MtmMap'源自)。 –