| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Автоопределение типа в аргументе |
| Автор: SolRus 28.5.2012, 20:07 | ||||||||||||
1. Хочу сделать также как find определяет тип, но так как непойму что ставить в аргументе,
решил попробовать через шаблон код на http://liveworkspace.org/code/9d40054a98a1b4a82bbd6f3ad65cccce или вот код:
как сделать чтоб в зависимости от типа выбиралось (nit->a или nit->s)? 2. вообщем хотелось бы дописать const
ps: но лучше бы вызывать без шаблона
|
| Автор: boostcoder 28.5.2012, 20:55 | ||
поддерживаю. но только не объясняйте что неполучается, а объясните чего хотите добиться.
http://www.boost.org/doc/libs/1_49_0/libs/type_traits/index.html? |
| Автор: SolRus 28.5.2012, 20:57 | ||||||
ну смотри, когда find вызываешь то ему по барабану какой тип у третьего аргумента, ну и уменя взависимости от типа должен вызываться, ну как в полиморфизме, только не наследование, а тип
ну делать перегрузку для каждого типа как то тупо, там всего то идет одно сравнение такого вида: nit->a / nit->s c const_iterator не получается, сама переменная же не в объекте и насколько понимаю, должна изменятся не влияя на объект, значение итератора в объекте list не хранится же....
а без буста никак? пойду читать что оно такое... :( |
| Автор: boostcoder 28.5.2012, 21:09 |
нужные тебе шаблоны закодить - пять минут работы. так что да, можно и без буста а если твой компилятор умеет С++11 - то там все необходимые шаблоны есть. вот только я все равно не понял задачу.. Добавлено через 44 секунды ааа, понял сейчас.. |
| Автор: SolRus 28.5.2012, 21:29 | ||||
надеюсь понял вот там где сбой должно идти корректное сравнение, т.е.
ps: чето 5 минут растянулось |
| Автор: boostcoder 28.5.2012, 21:33 | ||||
если я все же правильно понял, то вотъ лекарство:
http://liveworkspace.org/code/886621e8694e2621c7125ae8a2ffe255 Добавлено через 2 минуты и 24 секунды пока писал, пришло в голову еще два понимания задачи. и того у меня их оказалось три. пришлось отсеивать два ненужных) Добавлено через 11 минут и 51 секунду
это уже сам впиши в selector<>::func() |
| Автор: SolRus 28.5.2012, 22:55 | ||
| большое спасибо, boostcoder на основе твоих специализаций шаблонов, сделал что нужно))
вопрос решен! |
| Автор: boostcoder 28.5.2012, 22:58 |
это тут зачем? *this у тебя и так наследует все публичные свойства/типы/методы предка. разве мой пример без всей этой лабуды непонятней был? |
| Автор: SolRus 28.5.2012, 23:09 | ||||
точно, убрал
хы |
| Автор: boostcoder 28.5.2012, 23:19 |
я сказал с чем разбирался. ну пусть будет так, раз тебе так удобней. |
| Автор: SolRus 28.5.2012, 23:32 | ||||||
блин проглядел, что-то const ошибку дает:
я так понимаю const_iterator не может изменятся? мне нужно чтоб изменялся итератор, значит функция не может быть const? |
| Автор: boostcoder 28.5.2012, 23:37 |
угу. иначе противоречие. |