помочь мне выяснить, пожалуйста, почему у меня есть эта ошибка:Проблемы с начать() мою реализацию карт
ошибка:
<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;
}
Вы пытаетесь переопределить ссылку на элемент с этим -> _ it = iterator (& _pairs) ;? –
это опечатка, но все тот же проблема после исправления. Проблема в том, что ошибка появляется, несмотря на то, что я вызываю iterator ctor с Node * переменной, но он ее не видит. –
KittyT2016
Невозможно определить, в какой области видимости, и вы не указали достаточно кода. Возможно, попробуйте 'this -> _ it = :: iterator (& _ pairs);' (в предположении, что ваш 'iterator' объявлен глобально, но скрывается' iterator' в 'std :: map', который я предполагаю' MtmMap' получен из). –