![]() |
|
Модераторы: bsa |
![]()
|
|
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
>отличная аргументация
Не аргументация, а поправка. >а вот хотелось бы поподробней узнать, что имелось ввиду.. С виртуальными функциями я погорячился. А имелось в виду:
Но это уже хаки, на них рассчитывать не нужно, конечно. >По второму вопросу, с хэндлерами, есть мысли? Вами же предложенный массив, чем не решение? -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Это сообщение отредактировал(а) azesmcar - 30.4.2010, 14:36 |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Ага, значит, если типы в структуре Plain Old Data (POD - int, char и т.д.), то они должны автоматически инициализироваться нулями. Значит в моем случае следующий код сделает всё сам:
Да какое-то он в стиле Си. Я конечно ничего против языка Си не имею, но думал, может функторы какие-нибудь применить можно, классы, stl. Это сообщение отредактировал(а) SABROG - 30.4.2010, 14:55 |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
почему здесь нельзя инизиализировать ссылку значением понятно ? ну а константную можно, и сделано для того, чтоб можно было, в частности :
Добавлено через 42 секунды |
||||||
|
|||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Об этом я знал, просто меня удивил твой комментарий насчет "не эквивалентности". Я ведь о другой эквивалентности говорил, о приведении (объявлении?) безымянной структуры к нужному типу или нужного типа, а не о правах доступа/свойстве объекта. Я так до сих пор в этом не разобрался, что там происходит "(int){0}" толи объявление, толи приведение. Это сообщение отредактировал(а) SABROG - 30.4.2010, 15:02 |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
SABROG
Да, впрочем к агрегатам (?) можно и такой способ применить
можешь тут почитать, тоже доп. информация. http://forum.vingrad.ru/forum/topic-257566...y1856934/0.html |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
У меня ситуация несколько иная, есть несколько функций, где идет вызов другой функции, в которую нужно передать структуру инициализированную нулями. Поэтому я хотел от такого избавиться:
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
ну или с default значением, но это только для POD структур. а зачем нужны несколько функций, которые делают тоже самое? Это сообщение отредактировал(а) azesmcar - 30.4.2010, 15:27 |
|||
|
||||
| mes |
|
||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну так мой комментарий относился к слову "аналогично", которое в свою очередь относилось к строке
т.е. я подчеркнул , что она не аналогична
{0,0} - не есть безымянная структура, и создать объект без указания типа по такому определению не получится. о правах доступа в этой теме вообще никто не говорил
создание безымянной структуры инициализированной списком параметров, но, на сколько я знаю, такой подход нежелателен по стандарту.. |
||||||||
|
|||||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
MyClass ведь не POD тип? Но член member все-равно будет проиницилизирован нулем, так как он POD? Функция принимает в качестве параметров структуру с указателями на callback функции для установки перехватчика. Иногда есть необходимость снимать ранее установленые перехватчики, чтобы вызывался оригинальный хендлер, для того, чтобы избежать рекурсии. Можно конечно написать новую функцию типа uninstallFilter(). Но я решил вместо этого вызывать функцию типа setFilter() без параметров, чтобы снять ранее установленные обработчики. Пока подержу тему открытой, нужны мысли по поводу массива хэндлеров. Неужели это единственно верный и самый компактный вариант? |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну так Вы столько воды в этой теме налили, что в ее расплывах и не видно где у Вас проблема то.. Добавлено через 2 минуты и 52 секунды
а чем виртуальные функции не угодили то ? Добавлено через 4 минуты и 7 секунд
тут не понятно о чем Вы.. отдалено предполагаю, что хандлер при вызове сам устанавливает хандлеры.. Это сообщение отредактировал(а) mes - 30.4.2010, 15:50 |
||||
|
|||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
нет, не будет.
можно проверить
Добавлено через 3 минуты и 23 секунды откровенно говоря я не совсем понял суть задачи, если можно глобальнее и подробнее. |
||||||||
|
|||||||||
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Если брать вопрос про инициализацию структуры нулевыми значениями, то проблема в читабельности кода. Подход с классом выглядит не читабельно и громоздко по сравнению со структурой с 4мя указателями. Функция библиотеки (не моей) принимает в качестве аргумента структуру в которой нужно передать 4 указателя на обычные статические функции. Я не могу этого изменить, но могу обернуть этот вызов в свои функции.
Чего-то я запутался Короче речь о const-correctness, уж не знаю как это правильно перевести. Ага, то есть еще одна дверь закрывается и остается полагаться на default constructed value для POD типов или как более универсальный, но слишком громоздкий и нечитабельный вариант с классом как в первом моем посте. Не заморачивайся, у меня самого сейчас та еще каша в голове. Просто даже по логике необходимость подготавливать аргумент, значение которого заранее известно, в функцию или метод кажется не совсем правильной. Зачем писать лишний код где-то отдельно, если можно поставить значение по умолчанию или инициализировать структуру сразу при вызове функции?
ОС присылает int'овые состояния, которых больше 30, на кажое состояние отдельные функции, которые запрашивают от ОС дополнительную информацию о них у той же ОС. Вот я и не хочу делать 30 и более case'ов. А это уже проблема. Значит между этими двумя вариантами большая разница:
Я правильно понял? Это сообщение отредактировал(а) SABROG - 30.4.2010, 16:42 |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
нет, на самом деле между классом и структурой только одна разница, по умолчанию все члены класса являются private и наследование по умолчанию от класс - private. Все остальное тоже самое. В примере выше проблема не в использовании ключевого слова class, а в приватности члена класса. map или массив+указатель на функцию. А причем тут инициализация структур? Это сообщение отредактировал(а) azesmcar - 30.4.2010, 16:48 |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Значит тут такая ситуация?
Так чтоль? Я уже путаюсь о чем вы меня спрашиваете. |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |