Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ООП

2.1K
31 марта 2005 года
bleed
22 / / 05.07.2003
Всем привет,
есть такой вопрос как лучше использовать ООП при разработке. Я уже не раз сталкивался с одной проблемой вот пример:
есть класс CMyClass
описан в CMyClass.h

как один раз создать обьект, и сделать так чтобы он был видим во всех других модулях приложения.
например в main.cpp

можно было бы просто написать
MyClass->Func();
не создавая обьект выше.

Надеюсь понятно выразился,
спасибо.
487
31 марта 2005 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by bleed
Всем привет,
есть такой вопрос как лучше использовать ООП при разработке. Я уже не раз сталкивался с одной проблемой вот пример:
есть класс CMyClass
описан в CMyClass.h

как один раз создать обьект, и сделать так чтобы он был видим во всех других модулях приложения.
например в main.cpp

можно было бы просто написать
MyClass->Func();
не создавая обьект выше.

Надеюсь понятно выразился,
спасибо.



Чтобы сделать его видимым сделай следующее:
В CMyClass.h:

 
Код:
extern CMyClass *MyClass;

В CMyClass.cpp:
 
Код:
CMyClass *MyClass;


Теперь, в любом модуле, где подключен CMyClass.h переменная MyClass будет видна.

Но есть один момент - CMyClass *MyClass - это динамический объект - поэтому его в любом случае придется где-то создавать. Но если ты его объявишь статически - тобишь CMyClass MyClass; - Тогда создавать его дополнительно не потребуется.
Ну и тогда все должно выглядть так:
В CMyClass.h:
 
Код:
extern CMyClass MyClass;

В CMyClass.cpp:
 
Код:
CMyClass MyClass;
2.1K
31 марта 2005 года
bleed
22 / / 05.07.2003
Цитата:
Originally posted by ddnh_bc
Чтобы сделать его видимым сделай следующее:
В CMyClass.h:
 
Код:
extern CMyClass *MyClass;

В CMyClass.cpp:
 
Код:
CMyClass *MyClass;


Теперь, в любом модуле, где подключен CMyClass.h переменная MyClass будет видна.

Но есть один момент - CMyClass *MyClass - это динамический объект - поэтому его в любом случае придется где-то создавать.


т.е. в любом случае прийдется делать в любом модуле где подключен CMyClass.h

 
Код:
MyClass = new CMyСlass;


Во втором варианте обьект создан, под него выделенна память
 
Код:
CMyClass MyClass;

А удалить его как нибудь потом можно?

Большое спасибо.
9.5K
31 марта 2005 года
nikiforov
24 / / 21.03.2005
Можно так же создать хедер с глобальными описаниями для всего проекта (напр. Globals.h). Определения разместить можно по различным местам (cpp-файлам), а можно в специально отведенном для этого файле (напр. Globals.cpp).
Так будет четко определено, какие глобальные объекты может использовать любой модуль.
9.5K
31 марта 2005 года
nikiforov
24 / / 21.03.2005
Цитата:
Originally posted by bleed
т.е. в любом случае прийдется делать в любом модуле где подключен CMyClass.h
 
Код:
MyClass = new CMyСlass;


Ни в коем случае! (:-)) Иначе потеряешь объекты.

Цитата:

Во втором варианте обьект создан, под него выделенна память
 
Код:
CMyClass MyClass;

А удалить его как нибудь потом можно?

Большое спасибо.



Нет. Статические объекты удаляются только при завершении программы (после выхода из main()).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог