|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.06.2012, 21:32 | #11 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
27.06.2012, 21:38 | #12 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
27.06.2012, 21:40 | #13 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
27.06.2012, 21:42 | #14 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
необязательно в либу. достаточно сделать хидер, где объявлены все глобальные объекты как extern, и сделать cpp, где эти объекты определены (для удобства). ну я же привел пример, смотри выше, никакой либы в нем нет
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
28.06.2012, 09:31 | #15 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Мне нужно научится делать нечто подобное: я создаю класс, который в конструкторе использует внешний и скрытый от пользователя глобальный объект, живущий в его единице трансляции. Использование такого объекта для пользователя - аналогично использованию объекта любого другого класса. То есть, пользователь может делать объект глобальным, или пихать его в конструктор другого глобального объекта, и не думать о том, что "у него же там в конструкторе итак глобальный пользуется - как бы не вышла беда!" Тем более, что инкапсуляция позволяет пользователю ничего не знать об устройстве используемого класса. std::vector из твоего примера - пример того, как может произойти поломка, которая может привести пользователя просто в недоумение. Он объявляет глобальный объект в майне, и этот объект тихо-мирно начинает глючить. И вынуждает пользователя нарушать инкапсуляцию, и лезть во внутренности класса. А потом думать: "вот блин! Понаделали говнокода из глобальных объектов!" Так делать нельзя. Надо, что бы было просто, как у std:stream всяких |
|
28.06.2012, 12:43 | #16 | ||
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
Цитата:
Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
||
28.06.2012, 14:35 | #17 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
_Bers, вектор тоже валиться будет, если попытаться разыменовать указатель на буфер (поскольку до прохода конструктором он будет равен нулю, если объект статический). Объекты cin, cout, cerr, clog и их широкие друзья не валятся, потому что их инициализация происходит при включении iostream, но для этого костыль используется - в заголовке сидит глобальная переменная типом ios_base::Init (или как-то так) и инициализирует вышеперечисленные объекты в своём конструкторе (при этом ведётся счётчик вызовов конструктора, чтобы гарантировать единственность инициализации).
|
28.06.2012, 20:44 | #18 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Счетчик Шварца?
|
28.06.2012, 22:52 | #19 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как подружить Ribbon и Alpha Controls | artemavd | Компоненты Delphi | 0 | 17.06.2012 17:44 |
Как грамотно подружить Firebird и Interbase на 1 ПК? | Alexei91 | БД в Delphi | 3 | 20.08.2010 13:29 |
Исключение при удалении из std::map | arokot | Общие вопросы C/C++ | 2 | 11.08.2010 17:36 |
сортировка std::map | NiCola999 | Общие вопросы C/C++ | 2 | 27.04.2010 23:14 |
Как подружить SendMessage и TIdHTTP | zcoder | Работа с сетью в Delphi | 1 | 13.04.2009 06:01 |