В общем у меня програмка на BC++ с несколькими формами
В модуле главной формы (MainUnit.cpp) я объявляю что-то вроде:
TMyClass MyObject;
Внутри MainUnit.cpp работа с MyObject идет нормально, но в других модулях (OtherUnit.cpp) этот обьект никак не видится:
1) если в OtherUnit.cpp я напишу
#include "MainUnit.cpp";
то при линковке компилер ругнется на то что MyObject обьявляется два раза (один раз в MainUnit.cpp и один — в OtherUnit.cpp) и фактически в OtherUnit.cpp будет вестись работа с другим экземпляром обьекта
2) наскока я знаю такие вещи решаются при помощи
extern. Но компилятор опять ругается на неверный синтаксис (?!?), или extern не может работать с объектами классов?
Вопрос: что делать и как быть? Мне надо обьявить обьект, который будет доступен в других модулях
Здравствуйте, mxl33, Вы писали:
M>Вопрос: что делать и как быть? Мне надо обьявить обьект, который будет доступен в других модулях
//Другой модуль
#include "MainUnit.h"
extern TMyClass MyObject;
B>B>//Другой модуль
B>#include "MainUnit.h"
B>extern TMyClass MyObject;
B>
Нифига... Та же самая байда...
[Linker Warning] Public symbol '_MyObject' defined in both module C:\{bla-bla-bla}\MAINUNIT.OBJ and C:\{bla-bla-bla}\OTHERUNIT.OBJ
Здравствуйте, mxl33, Вы писали:
M>Нифига... Та же самая байда...
M>[Linker Warning] Public symbol '_MyObject' defined in both module C:\{bla-bla-bla}\MAINUNIT.OBJ and C:\{bla-bla-bla}\OTHERUNIT.OBJ
А ты случаем MyObject не в .h файле создаёшь? Так надо в cpp.
Здравствуйте, mxl33, Вы писали:
B>>B>>//Другой модуль
B>>#include "MainUnit.h"
B>>extern TMyClass MyObject;
B>>
M>Нифига... Та же самая байда...
M>[Linker Warning] Public symbol '_MyObject' defined in both module C:\{bla-bla-bla}\MAINUNIT.OBJ and C:\{bla-bla-bla}\OTHERUNIT.OBJ
Очень похоже не то, что строка
TMyClass MyObject; находится в MainUnit.h. Если это так, то ее нужно перенести в MainUnit.cpp.