Страница 1 из 1

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

Добавлено: 26 фев 2004, 14:01
Yurich
LH писал(а):Но когда производятся попытки работы со структурой в файле Unit2.cpp то возникают ошибки доступа к памяти. Unit1.cpp и Unit2.cpp объединены своими Untit.h Спасибо.
Это значит что когда ты пытаешься работать с этой структурой ты еще не выделил память под нее. Сначала структуру нужно создать, а лишь потом использовать.

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

Добавлено: 26 фев 2004, 16:35
Hawk
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;

Добавлено: 02 мар 2004, 18:16
Romeo
Короче нужно поместить в хедер:


Base
{
...
};

extern Base * base;


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