Custom container requirement to work with Qt's foreach

containers, foreach, qt

Solution

I've omitted the dummy implementations I used but this compiled for me:

template< class T >
class MyList
{
public:
    class const_iterator
    {
    public:
        const T& operator*();
        bool operator!=( const const_iterator& ) const;
        const_iterator& operator++();
    };

    const_iterator begin() const;
    const_iterator end() const;
};

Problem

What is the bare minimum amount of code to create a custom container that would work with Qt foreach macro? I have this so far ``` template< class T > class MyList { public: class iterator { public: }; class const_iterator { public: inline iterator& operator++ () { return *this; } }; }; ``` and I'm getting this compiler error: ``` 4>.\main.cpp(42) : error C2100: illegal indirection 4>.\main.cpp(42) : error C2440: 'initializing' : cannot convert from 'MyList<T>::const_iterator' to 'int' 4> with 4> [ 4> T=int 4> ] 4> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called ``` when I try to compile this: ``` MyList<int> mylst; foreach(int num, mylst ) qDebug() << num; ```

Original source