экземпляры класса
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



экземпляры класса Expand / Collapse
Автор
Сообщение
18.07.2006 19:08
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum 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
Впрочем  данный эффект не зависит от перестановки порядка создания.
Почему?  Может неявно создаётся новый экземпляр класса

Сообщ. #900969
18.07.2006 20:43
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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; то  такой хедер невозможно включить дважды в одном и том же проекте. Иначе возникнет ошибка при линковании.

Или я чего-то не понял?

Сообщ. #900971
19.07.2006 21:17


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 30.09.2008 17:18
Сообщ.: 121, Visits: 2 334
Должно возникать предупреждение, а не ошибка.
Однако такое допустимо, новый объект класса создается при каждом включении модуля DM. Используйте спецификатор extern
Сообщ. #901072
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 5:28