创建一个可以与Qt foreach宏一起工作的自定义容器的最小代码量是多少?
到目前为止,我有这个
template< class T >
class MyList
{
public:
class iterator
{
public:
};
class const_iterator
{
public:
inline iterator& operator++ ()
{
return *this;
}
};
};
我得到了这个编译器错误:
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
当我尝试编译这段代码时:
MyList<int> mylst;
foreach(int num, mylst )
qDebug() << num;
发布于 2009-11-17 06:25:29
我省略了我使用的虚拟实现,但这是为我编译的:
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;
};
发布于 2009-11-17 06:30:41
作为免责声明,我不确定这是否可能。
查看qglobal.h中foreach
的定义。看起来你可能需要定义一个begin
和end
方法。
在我的系统上,它位于$QtInstallDir/src/corelib/global/qglobal.h
https://stackoverflow.com/questions/1745123
复制相似问题