| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Глобальный объект |
| Автор: Yulo 26.5.2012, 15:34 |
| Я хочу сделать глобальный объект доступный в любом месте программы. В одном файле: myType* mt в остальных extern myType* mt запускаю под дебагером(VC 2010) вначале инициализирую указатель: mt=new myType; в файлах(где extern), при входе дебагером, указатель mt равен нулю. еще странность, mt=01ff5f20 при входе в функцию mt->func() this равен 01ff6000 ?!!! давно не программировал на С++ |
| Автор: boostcoder 26.5.2012, 15:47 |
| используй http://forum.try-catch.ru/index.php?topic=1039.0. |
| Автор: Yulo 26.5.2012, 16:10 |
| спасибо, буду смотреть синглтон. Все-таки хотелось бы понять, если есть extern myType* my; разве он не должен указывать на тотже объект? |
| Автор: mes 26.5.2012, 16:20 |
должен |
| Автор: volatile 26.5.2012, 22:44 | ||||
Должен, то должен. Только порядок выполнения модулей неопределён. Например в 1 файле:
Во 2-ом файле:
|
| Автор: AndrewMT 31.5.2012, 11:27 |
| Не совсем понял Вас. Вообще, делается так: в неком файл1.срр определяете тип myType, в файле1.h пишете просто объявление типа myType с ключевым словом extern (буквально так: extern myType; ) а потом файл1.h подключаете к тем модулям, где тип myType используется. |
| Автор: volatile 1.6.2012, 00:05 | ||
Это вы кого не поняли? если меня, то от вашего ровным счетом ничего не изменится.
|
| Автор: math64 1.6.2012, 09:44 | ||
Нужно так:
или использовать синглетон. |
| Автор: volatile 1.6.2012, 13:27 |
math64, там имелось ввиду (а) глобальное, такое же (mt), и как название этой темы. Локальное 'а', естественно будет работать, даже без дополнительных ухищрений. |
| Автор: volatile 3.6.2012, 13:35 | ||||
Ну почему-же? Очень даже можно:
Да, только после инициализации mt |
| Автор: volatile 3.6.2012, 13:55 | ||||||||
| Насчет неопределенности, видимо я не смог изложить правильно, или ... в общем мне кажется меня не понимают. Еще один пример того что я хотел сказать: файл1.cpp
файл2.cpp
файл3.cpp
Внимание вопрос что напечатает прога ? Определенно, она напечатает одно из двух, либо "OK", либо "KO", но вот что именно ?!? Подсказка: Это вопрос, к новичкам, чтобы задумались, а не к экспертам, чтобы давать на него всем очевидные решения, типа: пиши
|