сделал класс-обёртку над QList
C++ (Qt)
template <class T>
class IMDList
{
public:
typedef typename QList<T*>::ConstIterator const_iterator;
const_iterator begin() const;
const_iterator end() const;
int count() const;
protected:
QList<T*> *list;
};
template <class T>
class MDList:public IMDList<T>
{
public:
MDList();
virtual ~MDList();
};
template <class T>
typename IMDList<T>::const_iterator IMDList<T>::begin() const
{
return this->list->begin();
}
template <class T>
typename IMDList<T>::const_iterator IMDList<T>::end() const
{
return this->list->end();
}
template <class T>
int IMDList<T>::count() const
{
return this->list->count();
}
template <class T>
MDList<T>::MDList()
{
this->list = new QList<T*>();
//добавим три элемента для тестирования:
this->list->append(new T());
this->list->append(new T());
this->list->append(new T());
}
template <class T>
MDList<T>::~MDList()
{
delete this->list;
}
и запустил маленький тест:
C++ (Qt)
class A
{
};
void foo()
{
int result=0;
MDList<A> *list = new MDList<A>();
result = list->count(); //3, все ок
result = 0;
foreach(A *a, *list)
{
result++; //растет до 3, все ок
}
result=list->count(); //0, почему???
IMDList<A> *list2 = new MDList<A>();
result=list2->count(); //3, все ок
result=0;
foreach(A *a, *list2)
{
result++; //растет до 3, все ок
}
result=list2->count(); //3, все ок
}
вот непонятно место, где показывает, что количество в коллекции 0