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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
slavmak2
1 / 1 / 2
Регистрация: 10.10.2011
Сообщений: 6
#1

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

24.01.2012, 13:27. Просмотров 473. Ответов 2
Метки нет (Все метки)

Такая вот проблема. Решил сделать глобальный хедер и занести в него объявление
переменной-объекта:

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++
Помогите, пожалуйста с заданиями. 1. Унарная операция Создать объект стек, перегрузив ++ и -- (как постфиксными, так и префиксными)....

Удаляется объект когда не требуется и всё равно продолжает существовать - C++
Всем привет. Честно говоря я не знаю как ещё более правильно описать проблему в заголовке. В общем проходил раздел, посвящённый...

Создать пакетный файл, осуществляющий копирование нескольких файлов в заданные директории - CMD/BAT
Создайте пакетный файл P4, осуществляющий копирование нескольких файлов в заданные директории. Файлы и директории задаются парами...

Как создать экземпляр класса доступный во всех формах? - C++ Builder
Разобрался сам. В хедаре добавил: extern PACKAGE User *user; В cpp файле также эта переменная должна быть объявленна: User...

Проверка на существование нескольких файлов в нескольких папках - Visual Basic .NET
есть 5 папок(1,2,3,4,5), в них находятся 5 файлов( в каждой папке по файлу с известными именами) (1.txt,2.txt 3.txt, 4.txt, 5.txt) при...

Как создать объект оператором new, если имеется только тип указателя на объект, переданный через шаблон? - C++ Builder
Есть шаблон. Точно известно, что его параметр Т это указатель. Как с помощью new создать переменную типа *T ? Код приведенный ниже дает...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.01.2012, 18:28 #3
А ничего что obj это вообще указатель на объект? Используйте таки стрелку вместо точки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 18:28
Привет! Вот еще темы с ответами:

При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не поддерживает это свойство или метод.' - C# ASP.NET
При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не поддерживает это свойство или метод.'...

Как добавить обработку файлов нескольких определённых типов в код BAT-файла для архивации файлов? - CMD/BAT
Спасибо большое за полезную информацию! Отличный код. Подскажите как к нему прикрутить обработку файлов нескольких определенных типов? Не...

Ассоциация файлов с программой, открытие нескольких файлов - Visual Basic .NET
Я ассоциировал файлы с расширением .scr со своей программой(свойства=>изменить). В свойствах приложения стоит галочка "запускать только...

Общий объект для нескольких сессий - PHP
Какие способы существуют сделать данные общими для нескольких выполняющихся одновременно сессий?


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru