![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Всем доброго дня.
В следующем коде вываливается куча ошибок:
http://liveworkspace.org/code/97ad4f6a84f1...8b759d09e807268
не понимаю в чем проблема? спасибо. |
||||
|
|||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Плейсхолдер забыл.
Это сообщение отредактировал(а) Леопольд - 27.11.2010, 13:37 -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
там же написано :
P.S. хотя у шаблона ошибки длинные..стоит смотреть в самый конец, обычно суть там скрыта.. Это сообщение отредактировал(а) mes - 27.11.2010, 13:41 |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
два вопроса, два ответа
Это сообщение отредактировал(а) Леопольд - 27.11.2010, 13:46 -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
мдя.. это был первый вопрос ;) внимание, вопрос №2: нужно создать функциональный объект с методом класса, при том что известен тип класса, и сигнатура метода. имя метода неизвестно. такое возможно?
http://liveworkspace.org/code/628b73efe64c...17676ab3d54c8cc |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
разгрузить через тип.. см. для чего используется delivery(он же proxy) из соседней темы.. Добавлено через 1 минуту и 22 секунды сейчас ухожу..как приду (если до этого момента не получится) напишу.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
так работает. но не хочется создавать промежуточный методы. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
так же может помочь гугль по template traits
Добавлено через 1 минуту и 27 секунд не обязательно использовать как промежуточный вызов метода, можно у "деливери" запрашивать имя метода.. |
|||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Это сообщение отредактировал(а) Леопольд - 27.11.2010, 15:09 -------------------- вопросов больше чем ответов |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Леопольд, проблема та же остается. нужно знать имя метода. а мне оно не известно. есть только сигнатура, и уверенность в том, что это сигнатура метода T.
|
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
boostcoder, т.е. это не юзерский, а твой код?
Напиши как это должен видеть юзер. Это сообщение отредактировал(а) Леопольд - 27.11.2010, 15:17 -------------------- вопросов больше чем ответов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Как ты можешь не знать имён в "своём" коде, я не представляю. Это сообщение отредактировал(а) Леопольд - 27.11.2010, 16:07 -------------------- вопросов больше чем ответов |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
это если просто еще можно получать met_t из sig_t::signature_type, но я забыл как это делается =\ |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Леопольд, много слов...
вот суть вопроса:
http://liveworkspace.org/code/628b73efe64c...17676ab3d54c8cc спасибо. Добавлено через 3 минуты и 25 секунд GoldFinch, ну вы вывели новый тип, что по сути, то же что имя метода. это что? Добавлено через 4 минуты и 32 секунды ааа, понял. |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Если бы я понял вопрос из кода... А код, вроде бы и не изменился.
Это сообщение отредактировал(а) Леопольд - 27.11.2010, 16:32 -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Оказалось что не подходит такой вариант.
Это сообщение отредактировал(а) Леопольд - 27.11.2010, 19:41 -------------------- вопросов больше чем ответов |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
я в курсе.. я для Вас пояснял , что требуется для тс |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот некоторый ужасТный пример..
http://liveworkspace.org/code/c26e7259dec9...5a1ef3fedddee8b который напрашивает вопрос, а чего такие опасения насчет лишнего вызова (с деливери) из за которого Вы лишаете себя, некоторых преимуществ.. и в частности 1. автоматическое приведение параметров 2. возможность использовать параметры по умолчанию в конечной функции 3.. Это сообщение отредактировал(а) mes - 27.11.2010, 20:01 |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Всё равно не понял. По адресу нельзя, по имени нельзя. Как тогда? В С++ я других спосоbов не знаю. Всё равно всё сведётся к какому ниbудь имени.
Опять же, в этом примере вызов по адресу, адрес выдаёт функция у который, опять же, есть имя (точнее тут уже два имени, есть ещё имя шаbлона - f1, f2)... В чём тут отличие, кроме очевидного усложнения кода? Это сообщение отредактировал(а) Леопольд - 27.11.2010, 20:16 -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
теперь мы хотим передать для вызова:
1. можно написать прокси обертку, которая будет для нужного имени возвращать адрес, но этот способом обладает целым рядом недостатков , часть из которых упомянута выше.. 2. а можно сделать прокси обертку, которая для по условному (заранее зарезервированному) имени будет вызывать нужный метод.. т.е. получиться отражение имени типа, на имя метода.. |
||||||
|
|||||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
нет-нет. извините что ввел в заблуждение. адрес тоже известен. Добавлено через 6 минут и 43 секунды
не в этом причина. просто подвернулась ситуация, которую хочется понять. чтоб не напороться еще раз. т..е адрес объекта. что-то я сегодня торможу по полной... |
||||
|
|||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
-------------------- вопросов больше чем ответов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
boostcoder, это в продолжение вашей неосиливаемой мегаветки про "типозависимые хандлеры"? Вы, видимо, уже какую-то терминологию выраbотали, которой я не знаю...
Это сообщение отредактировал(а) Леопольд - 27.11.2010, 20:28 -------------------- вопросов больше чем ответов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
пока получил это:
http://liveworkspace.org/code/c070cebbee78...383fcbd17fb2b15 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
для начала забудем про сигналы.. чтоб облегчить задачу.. вот пример в стиле "прокси": http://liveworkspace.org/code/1b953fdb5fc2...7057ac80a0e28b9 попробуйте переписать его в стиле "с возвращением адреса" |
|||
|
||||
| boostcoder |
|
||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
форк
"не как у всех" Добавлено через 10 минут и 44 секунды
а смысл? тут и так все понятно. или я чего-то не понял? |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
разницу между "проксированием"и "биндингом"... |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
вот весь вопрос:
http://liveworkspace.org/code/b294e00f542d...83e94c6403a17bc Добавлено через 1 минуту и 45 секунд тут Вы правы но разве то, чего я хочу добиться, все же невозможно? просто любопытно |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а имя метода где ? где то вы явно должны указать его... либо напрямую, либо через прокси-оболочку.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
да-да-да! это последнее чего не понимаю... уже и сигнатуру вывел(косо правда) Добавлено через 8 минут и 46 секунд мысли вслух: почему при указании типа в static_cast<void(T::*)(int)> можно не указывать имя. а получить адрес имея сигнатуру нельзя?! что-то не так... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
потому что множество имен могут быть определены с одной сигнатурой.. а что выбирать из множества компилятор не знает, даже если множество представлено всего одним методом.. это, на мой взгляд, еще один из недостатков С++, то что нельзя одно и то же имя применить (без ухищрений) к разным типам .. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
в общем, я так понял, это невозможно..
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
кстати насчет сигнатур..вас никогда не смущала такое
какая сигнатура у sf ? что ее можно вызвать двумя различными способами.. Добавлено @ 21:54 это все равно что по определению (прилагательному) найти субъект нему относящийся.. вот имеем красный.. а что красный: мяч, фрукт, знак ... ? хоть грубоватое сравнение, но надеюсь поможет.. Это сообщение отредактировал(а) mes - 27.11.2010, 22:16 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
и правда, какая? ее то и методом назвать сложно. но вызывается как метод тоже...
ну да. Добавлено через 14 секунд помогло. Добавлено через 6 минут и 19 секунд хотя..с другой стороны...я тут подумал...допустим, к примеру, то, чего я хочу - возможно. теперь, представим ситуацию, когда есть два метода с одинаковой сигнатурой и разными именами. что тогда? какой метод выбрать компилятору? как решить? ответ - никак посему такое невозможно. если бы изначально меня посетила эта(очевидная) мысль, не было бы потрачено столько времени своего и участников. всем спасибо. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну прежде всего понятия "метод" нет в С++ и оно введено из другой области.. в С++ есть статические и нестатические функции-члены. во вторых на этот момент вызова "еще не важна" сигнатура.. а действует правило, о возможности обращения к членам.. вот в частности поэтому "адрес + сигнатура" не одно и то же (по функциональности) , что и "имя функции".. |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
корни появления этого термина в с++(а сначала в Си в поделках Страуструпа) я помню, из курса общей истории
все верно. Это сообщение отредактировал(а) boostcoder - 27.11.2010, 22:40 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |