Цитата(Ghost2 @ Jul 3 2008, 12:37)

Может typedef поможет.
С typedef-ом следующая история. Если сделать так:
Код
template <typename DataT> class TTreeObj
{
private:
TTreeObj<DataT>* parent;
list<TTreeObj<DataT>*> *childs;
public:
TTreeObj(DataT d=0, TTreeObj<DataT>* p=NULL) : info(d), parent(p), childs(NULL) {}
DataT info;
.....
};
typedef TTreeObj<DataT> TreeObjRefT;
template <typename DataT> TTreeObj<DataT>* TTreeObj<DataT>::operator[](int Index)
{
......
list<TreeObjRefT*>::iterator iterator_begin=childs->begin();
.....
return *iterator_begin;
}
то выводит такое сообщение об ошибке:
Код
"ap_common.h", line 817: error: identifier "DataT" is undefined
Если сделать так:
Код
template <typename DataT> class TTreeObj
{
private:
TTreeObj<DataT>* parent;
list<TTreeObj<DataT>*> *childs;
public:
TTreeObj(DataT d=0, TTreeObj<DataT>* p=NULL) : info(d), parent(p), childs(NULL) {}
DataT info;
.....
typedef TTreeObj<DataT> TreeObjRefT;
};
template <typename DataT> TTreeObj<DataT>* TTreeObj<DataT>::operator[](int Index)
{
......
list<TreeObjRefT*>::iterator iterator_begin=childs->begin();
.....
return *iterator_begin;
}
то выводит такое сообщение об ошибке:
Код
"ap_common.h", line 827: error: identifier "iterator_begin" is undefined
Как правильно нужно сделать?