struct Base{AnsiString name;
int age;};
Base *b;
Использование одной структуры в нескольких Unit.cpp
Код:
В файле Unit1.cpp выделяется под неё память
Код:
b=new Base;
Но когда производятся попытки работы со структурой в файле Unit2.cpp то возникают ошибки доступа к памяти. Unit1.cpp и Unit2.cpp объединены своими Untit.h Спасибо.
Цитата:
Originally posted by elderb
В файле Unit1.h объявлена структура, создан на неё указатель.
В файле Unit1.cpp выделяется под неё память
Но когда производятся попытки работы со структурой в файле Unit2.cpp то возникают ошибки доступа к памяти. Unit1.cpp и Unit2.cpp объединены своими Untit.h Спасибо.
В файле Unit1.h объявлена структура, создан на неё указатель.
Код:
struct Base{AnsiString name;
int age;};
Base *b;
int age;};
Base *b;
В файле Unit1.cpp выделяется под неё память
Код:
b=new Base;
Но когда производятся попытки работы со структурой в файле Unit2.cpp то возникают ошибки доступа к памяти. Unit1.cpp и Unit2.cpp объединены своими Untit.h Спасибо.
Не стоит определять какие-либо объекты (переменные) в заголовочных файлах (*.h). Т.о. у тебя созданы два разных указателя: один в Unit1, другой в Unit2.
Простейший, примитивный и некрасивый выход - это объявить глобальный указатель в заголовочном файле, а определить его уже в одном из cpp.
Код:
// Unit.h
struct Base{AnsiString name;
int age;};
extern Base *b;
struct Base{AnsiString name;
int age;};
extern Base *b;
Код:
// Unit1.cpp
Base *b;
............
b=new Base;
Base *b;
............
b=new Base;
Есть масса других более красивых решений, но они зависят от конкретной задачи. Одно из них - использование синглтонов, но это в двух словах не расскажешь.