Форум программистов, компьютерный форум CyberForum.ru

Требуется создать объект, доступный из нескольких файлов - C++

Восстановить пароль Регистрация
 
slavmak2
1 / 1 / 2
Регистрация: 10.10.2011
Сообщений: 6
24.01.2012, 13:27     Требуется создать объект, доступный из нескольких файлов #1
Такая вот проблема. Решил сделать глобальный хедер и занести в него объявление
переменной-объекта:

Global.h
C++
1
2
3
4
5
6
7
8
#ifndef GLOBAL_H
#define GLOBAL_H
 
 namespace Global{
    MyClass *obj;
 }
 
#endif
Далее в другом файле он инициализируется:

Unit1.cpp
C++
1
2
3
4
5
6
7
#include "Global.h"
 
void TForm1::FormActivate()
{
  Global::obj = new MyClass();
  obj.str = "hello";
}
И в третьем мне нужно использовать его поле:
Unit2.cpp
C++
1
2
3
4
5
6
#include "Global.h"
 
void TForm3::ButtonClick()
{
  Edit1.Text = obj.str;
}
Несмотря на то, что сам объект виден и в "Evaluate/Modify" вычисляется правильное значение obj.str в этом месте, в программе присваивается значение NULL и вылетает ошибка.

Вопрос в том, как сделать глобальные для всей программы переменные правильно, желательно без extern?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2012, 13:27     Требуется создать объект, доступный из нескольких файлов
Посмотрите здесь:

C++ чтение из нескольких файлов
Удаляется объект когда не требуется и всё равно продолжает существовать C++
Компиляция нескольких файлов C++
Чтение нескольких файлов C++
Компиляция нескольких файлов C++
C++ Проект из нескольких файлов
Проект из нескольких файлов C++
C++ Создать объект стек и создать объект очередь с перегруженными операциями

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cyberobot
 Аватар для cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
24.01.2012, 15:18     Требуется создать объект, доступный из нескольких файлов #2
Цитата Сообщение от slavmak2 Посмотреть сообщение
#include "Global.h"
void TForm3::ButtonClick()
{
Edit1.Text = obj.str;
}
нужно добавить Global::
C++
1
2
3
4
5
#include "Global.h"
void TForm3::ButtonClick()
{
 Edit1.Text = Global::obj.str;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.01.2012, 18:28     Требуется создать объект, доступный из нескольких файлов #3
А ничего что obj это вообще указатель на объект? Используйте таки стрелку вместо точки.
Yandex
Объявления
24.01.2012, 18:28     Требуется создать объект, доступный из нескольких файлов
Ответ Создать тему
Опции темы

Текущее время: 10:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru