реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Ошибка STL в Code Composer Studio
Degun
сообщение Jul 3 2008, 07:48
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 84
Регистрация: 4-09-07
Из: Москва
Пользователь №: 30 277



Для следующей строки, использующей контейнер list из STL и шаблоны,
Код
list< TTreeObj<DataT>* >::iterator iterator_begin=childs->begin();

в Code Composer Studio выдаётся такое сообщение об ошибке:
Код
"ap_common.h", line 851: error: expected a ";"

Т. е. компилятору не нравится конструкция list< TTreeObj<DataT>* >
Таже самая строка в Microsoft Visual Studio 2008 компилируется без проблем. Как это исправить?
Go to the top of the page
 
+Quote Post
Ghost2
сообщение Jul 3 2008, 08:37
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 7-11-06
Пользователь №: 22 046



Может typedef поможет.
Go to the top of the page
 
+Quote Post
Degun
сообщение Jul 4 2008, 07:59
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 84
Регистрация: 4-09-07
Из: Москва
Пользователь №: 30 277



Цитата(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

Как правильно нужно сделать?
Go to the top of the page
 
+Quote Post
Gyga
сообщение Jul 7 2008, 05:53
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 203
Регистрация: 3-06-08
Пользователь №: 38 014



А может list<void*> и приведение типов?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 00:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016