![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
День добрый.
Есть такая распространённая задача: в конструкторе класса передаётся объект, функции которого вызываются в других функциях класса. Псевдокод:
В случае, когда объект ( указатель на него ) ни в каких случаях не может быть нулём есть смысл сделать ссылкой. В случае, когда объект может быть не создан ( NULL ) приходится проверять: if ( объект ). Так вот, хочу избавиться от if ( объект ). как-то так
Не могу сообразить как это сделать. И возможно ли это вообще. P.S. УниверсальнаяОбёрткаНадОбъектом ессно не должна знать о классе ТипОбъекта. P.P.S. #define SAFE_CALL( объект, ф-ция, парамтеры ) не предлагать, т.к. не люблю макросы и код становится не читаемым. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
тернарное выражение?
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
? |
|||
|
||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
boostcoder, не совсем ( вернее совсем нет
ничем не лучше, чем
я просто хочу сделать класс-обёртку над любым указателем на объект, который бы транслировал вызовы функций объекту, если он не 0, и НИЧЕГО не делал бы в другом случае. azesmcar, я рассматриваю случай, когда не созданный объект это НЕ ИСКЛЮЧИТЕЛЬНАЯ, а НОРМАЛЬНАЯ ситуация. Чтобы не дать возможность создавать 0-й объект лучше использовать ссылку. Т.о. я хочу что-то типа:
Наверное, это просто невозможно, но чем чёрт не шутит ... Может всемирный разум что-нибудь придумает -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Не думаю, что это возможно. Из кода вызывается функция и если программа продолжает свое выполнение эта функция должна что-то выполнить. Можно выкрутиться макросами или совершать вызов через указатель на функцию, но я бы так не делал. Я честно пробовал, не получилось |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Если это будет выглядеть как
то можно, конечно, и макросами, хотя не хочется. А как сделать через указатель на функцию - что-то не соображу. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Когда ж, уже новый стандарт примут... Это сообщение отредактировал(а) Леопольд - 24.11.2010, 13:45 -------------------- вопросов больше чем ответов |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Леопольд
Все равно извращение |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |