Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать объект доступным все, время 
:(
    Опции темы
Paradox
Дата 25.2.2003, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Хочу создать свой класс- что-то вроде хранилища разной информации CMyStorage. Во время работы приложение может класть туда информацию, может черпать из него . Необходимо чтобы объект этого класса создавался в самом начале работы, сохранялся все время работы и был доступен из любого места моего приложения - мож кто знает как это сделать.




--------------------
---
PM MAIL WWW   Вверх
BlowFish
Дата 25.2.2003, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 29.3.2002
Где: Санкт-Петербург

Репутация: нет
Всего: нет



объявить объект глобально... Можно не глобально, это зависит от типа твоего приложения
PM MAIL   Вверх
Step
Дата 25.2.2003, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



лучший способ это глобально, можно еще передавать во все классы указатель на объект, но это не удобный метод.


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Paradox
Дата 26.2.2003, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Я уже пытался. Пробовал объявить там же где и theApp, но почему то theApp видно а мой объект нет.
confused.gifconfused.gif?


--------------------
---
PM MAIL WWW   Вверх
Step
Дата 26.2.2003, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



для визуала надо объявлять в файле stdafx.h


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Paradox
Дата 27.2.2003, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



А как сделать так чтобы объект создавался в самом начале работы приложения ?


--------------------
---
PM MAIL WWW   Вверх
Step
Дата 27.2.2003, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



скажи какой объект


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Vyacheslav
Дата 27.2.2003, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Используй паттерн Singleton, единственный экземпляр которого создается автоматически при первом обращении к нему
Код

class Singleton
{
public:
     static Singleton& Instance();
protected:
//это чтобы нельзя было создать самостоятельно через конструктор
     Singlenton();
public:
//здесь все твои методы и данные
      int Var1;
      int Var2;
};

Singleton& Singleton::Instance()
{
 static Singleton* NewSingleton = new Singleton();
 return *NewSingleton;
}



Теперь для того чтобы обратиться к этому объекту в любом месте делаем так
Код

Singleton GlobalSingleton = Singleton::Instance();
GlobalSingleton.Var1 = 122;

или еще проще
Код

Singleton::Instance().Var1 =122;

Объявлять глобальных объектов при этом не требуется. При первом обращении в программе Singleton::Instance() создаст объект. При последующих вызовах он просто вернет уже созданный объект. Если необходимо иметь уже данные инициализированные первоначальным значением, проинициализируй их в конструкторе


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
dim
Дата 28.2.2003, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Если нужна экстраинициализация, то преимуществом глобальных объектов является то, что их конструкторы вызываются до main(WinMain).
--------------------
that's all
PM MAIL   Вверх
Paradox
Дата 3.3.2003, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Vyacheslav, спасибо большое... Все получилось
Всем остальным тоже thanks


--------------------
---
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0726 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.