ООП
есть такой вопрос как лучше использовать ООП при разработке. Я уже не раз сталкивался с одной проблемой вот пример:
есть класс CMyClass
описан в CMyClass.h
как один раз создать обьект, и сделать так чтобы он был видим во всех других модулях приложения.
например в main.cpp
можно было бы просто написать
MyClass->Func();
не создавая обьект выше.
Надеюсь понятно выразился,
спасибо.
Цитата:
Originally posted by bleed
Всем привет,
есть такой вопрос как лучше использовать ООП при разработке. Я уже не раз сталкивался с одной проблемой вот пример:
есть класс CMyClass
описан в CMyClass.h
как один раз создать обьект, и сделать так чтобы он был видим во всех других модулях приложения.
например в main.cpp
можно было бы просто написать
MyClass->Func();
не создавая обьект выше.
Надеюсь понятно выразился,
спасибо.
Всем привет,
есть такой вопрос как лучше использовать ООП при разработке. Я уже не раз сталкивался с одной проблемой вот пример:
есть класс 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;
Цитата:
Originally posted by ddnh_bc
Чтобы сделать его видимым сделай следующее:
В CMyClass.h:
В CMyClass.cpp:
Теперь, в любом модуле, где подключен CMyClass.h переменная MyClass будет видна.
Но есть один момент - CMyClass *MyClass - это динамический объект - поэтому его в любом случае придется где-то создавать.
Чтобы сделать его видимым сделай следующее:
В CMyClass.h:
Код:
extern CMyClass *MyClass;
В CMyClass.cpp:
Код:
CMyClass *MyClass;
Теперь, в любом модуле, где подключен CMyClass.h переменная MyClass будет видна.
Но есть один момент - CMyClass *MyClass - это динамический объект - поэтому его в любом случае придется где-то создавать.
т.е. в любом случае прийдется делать в любом модуле где подключен CMyClass.h
Код:
MyClass = new CMyСlass;
Во втором варианте обьект создан, под него выделенна память
Код:
CMyClass MyClass;
А удалить его как нибудь потом можно?
Большое спасибо.
Так будет четко определено, какие глобальные объекты может использовать любой модуль.
Цитата:
Originally posted by bleed
т.е. в любом случае прийдется делать в любом модуле где подключен CMyClass.h
т.е. в любом случае прийдется делать в любом модуле где подключен CMyClass.h
Код:
MyClass = new CMyСlass;
Ни в коем случае! (:-)) Иначе потеряешь объекты.
Цитата:
Во втором варианте обьект создан, под него выделенна память
Код:
CMyClass MyClass;
А удалить его как нибудь потом можно?
Большое спасибо.
Нет. Статические объекты удаляются только при завершении программы (после выхода из main()).