|
|
|
Forum Guru
      
участник
Last Login: 07.11.2008 19:17
Сообщ.: 63,
Visits: 591
|
|
Есть проект C++Builder В хэдере DM..h модуля DM.описан класс sx включающий структуру g c членами V и E и экземпляр класса : sx g; В стартовой форме проекта AddSX.cpp (вначале её стоит #include "DM.h") Чдены данных изменяются, например g.p->V=10 g.p->E=7 Далее управление передаётся в следующую форму Interact.cpp В ней тоже стоит #include "DM.h" Однако в ней оказывается g.p->V=0 g.p->E=0Порядок создания форм такой 1) AddSX. 2)Interact 3)DM Впрочем данный эффект не зависит от перестановки порядка создания. Почему? Может неявно создаётся новый экземпляр класса
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.08.2008 19:49
Сообщ.: 1 577,
Visits: 17 092
|
|
| Если g это экземпляр класса sx, а sx включает в себя структуру g c членами V и E, то для доступа к V нужно написать g.g.V=10 а не g.p->V=10 Если в хедере DM.h объявлена (а не описана, как вы написали) глобальная переменная, то есть написано sx g; то такой хедер невозможно включить дважды в одном и том же проекте. Иначе возникнет ошибка при линковании. Или я чего-то не понял?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 30.09.2008 17:18
Сообщ.: 121,
Visits: 2 334
|
|
Должно возникать предупреждение, а не ошибка. Однако такое допустимо, новый объект класса создается при каждом включении модуля DM. Используйте спецификатор extern
|
|
|
|