1

配列ベースのリスト クラスのカスタム const_iterator ネスト クラスを作成しようとしています。ここにクラスがあります

class const_iterator {
private:
   const T *p;
public:
    const_iterator(const T *l) {
        p = l;
    }
    const_iterator(const_iterator &ci) { p=ci.p;}
    const T &operator*() const {return *p;}
    bool operator==(const iterator &i) const {
        if(*p==*i)
            return true;
        else
            return false;
    }
    bool operator!=(const_iterator &i) const {
        if(*p!=*i)
            return true;
        else
            return false;
    }
    const_iterator &operator=(const_iterator &i) const {
        p=i.p;
        return this;
    }
    const_iterator &operator++() const {
        return const_iterator(p+1);
    }
    const_iterator &operator--() const {
        return const_iterator(p-1);
    }

    const_iterator operator++(int) const {
        p = p+1;
        return const_iterator(p-1);
    };
    const_iterator operator--(int) const {
        p=p-1;
        return const_iterator(p+1);
    }

};

ただし、ここに示すように、クラスに戻って開始、終了などを行うと、次のようになります。

iterator begin() {
    return iterator(&data[0]);
}
const_iterator begin() const {
    return const_iterator(&data[0]);
}
iterator end() {return iterator(&data[place+1]);}
const_iterator end() const {return const_iterator(&data[place+1]);}

const_iterator cbegin() const {
    return const_iterator(&data[0]);
}
const_iterator cend() const {return const_iterator(&data[place+1]);}

cbegin と cend で「'ArrayList::const_iterator の初期化に一致するコンストラクターがありません」というエラーが表示されます。おそらく、C++ について理解していないばかげたものであることは承知しています。助けてくれてありがとう!

4

2 に答える 2

0

const_iterator( T *l)する必要がありますconst_iterator(const T *l)

于 2014-09-10T02:19:26.680 に答える