Использование одной структуры в нескольких Unit.cpp

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Yurich
Сообщения: 104
Зарегистрирован: 23 фев 2004, 19:07

26 фев 2004, 14:01

LH писал(а):Но когда производятся попытки работы со структурой в файле Unit2.cpp то возникают ошибки доступа к памяти. Unit1.cpp и Unit2.cpp объединены своими Untit.h Спасибо.
Это значит что когда ты пытаешься работать с этой структурой ты еще не выделил память под нее. Сначала структуру нужно создать, а лишь потом использовать.
Hawk
Сообщения: 215
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

26 фев 2004, 16:35

Yurich писал(а):
LH писал(а):Но когда производятся попытки работы со структурой в файле Unit2.cpp то возникают ошибки доступа к памяти. Unit1.cpp и Unit2.cpp объединены своими Untit.h Спасибо.
Это значит что когда ты пытаешься работать с этой структурой ты еще не выделил память под нее. Сначала структуру нужно создать, а лишь потом использовать.
это да, но по теории твой пример вообще не должен компилироваться. Когда ты подключаешь к Unit1.cpp этот хидер (Unit1.h), то у тебя создается переменная в этом модуле, когда ты подлкючаешь к Unit.2cpp там тоже создается такая же переменная, что по теории линкером должно выявляться и не собираться. Вообще в хидерах лучше ни каких переменных не обьявлять, т.е. не создавать Base *b; это уже создание переменной. если надо, чтобы переменная была доступна из нескольких cpp лучше в хидере её обьявить как extern Base *b; а на самом деле обьявить её в одном из cpp. Если у тебя инициализируется в Unit1.cpp то там и написать в начале файла Base *b;
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

02 мар 2004, 18:16

Короче нужно поместить в хедер:


Base
{
...
};

extern Base * base;


И всё будет работать.
Ответить