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

 
 
 
Reply to this topicStart new topic
> Как в Cross Studio 1.5 объявить класс по хитрому
Pat
сообщение Sep 7 2006, 12:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Есть вот такой набор наследуемых классов

Код
// Базовый Класс DrvObject
class DrvObject
{
public:
  unsigned char idnDrv;
};

// Класс DrvGrOblect
class DrvGroup;
class DrvGrObject : public DrvObject
{
public:
  DrvGrObject *next;
  DrvGroup    *owner;

  virtual void getEvent(TEvent& event);
};

// Класс DrvGrOblect
class DrvGroup : public DrvGrObject
{
public:
  DrvGrObject *last;
  DrvGrObject *current;
  DrvGroup();

  virtual void getEvent(TEvent& event);
  void insert(DrvGrObject* o);
  unsigned int execute(void);
};

Собственно вся загвоздка вот тут:

Код
// Класс DrvGrOblect
class DrvGrObject : public DrvObject
{
public:
  DrvGrObject *next;
  DrvGroup    *owner;

  virtual void getEvent(TEvent& event);
};

Вот этой конструкции DrvGroup *owner; компилятор не видит
IAR начинал работать нормально если вначале заголовочного файла приписать
class DrvGroup;

Cross Stulio этого не понимает.
Может есть какое волшебное слово применительно к GCC.
Go to the top of the page
 
+Quote Post
Alex03
сообщение Sep 7 2006, 18:12
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



В CW 1.5 build 2 Ваш код компилится даже без варнингов.
Правда с такими изменениями:
virtual void getEvent(/*TEvent& event*/);

Так что видимо надо искать пораньше, какойнить ";" в хидере не хватает и т.д.
Go to the top of the page
 
+Quote Post
Pat
сообщение Sep 7 2006, 18:33
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(Alex03 @ Sep 7 2006, 20:12) *
В CW 1.5 build 2 Ваш код компилится даже без варнингов.
Правда с такими изменениями:
virtual void getEvent(/*TEvent& event*/);

Так что видимо надо искать пораньше, какойнить ";" в хидере не хватает и т.д.

TEvent& event
Эту структуру я просто не вставил из за экономии места, (забыл закоментировать).
А так не хочет компилится пишет если:
вставлено class DrvObject;
parse error before "DrvGroup"
если его нет тогда
ISO C++ forbids declaration of `DrvGroup' with no type
В ИАРе еще раз повторюсь все компилится без проблем.
Go to the top of the page
 
+Quote Post
OlegS
сообщение Sep 8 2006, 21:23
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 38
Регистрация: 28-11-05
Пользователь №: 11 519



Цитата(Alex03 @ Sep 7 2006, 20:12) *
В CW 1.5 build 2 Ваш код компилится даже без варнингов.
Правда с такими изменениями:
virtual void getEvent(/*TEvent& event*/);

Ради интереса проверил - компилится на ура.
правда вместо:

class DrvGroup;
class DrvGrObject : public DrvObject
{
public:
DrvGrObject *next;
DrvGroup *owner;

virtual void getEvent(TEvent& event);
};


можно написать:

class DrvGrObject : public DrvObject
{
public:
DrvGrObject *next;
class DrvGroup *owner;

virtual void getEvent(TEvent& event);
};


но это, так - мелочи
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 22:24
Рейтинг@Mail.ru


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