|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.02.2013, 15:36 | #31 | ||
Пользователь
Регистрация: 02.02.2013
Сообщений: 44
|
разве нельзя просто void*, без void(*)(void)?
Цитата:
Цитата:
Код:
в примере был создан указатель: Func func; потом говорим на какой адрес указывает указатель: func = &Foo; и обычный вызов int test = func(параметры); тогда всё просто, но в записи <Functor, int> как любому шаблону мы просто указываем какие типы данных они будут использовать, в данном примере int вообще не используется, будет он или нет, что бы там не стояло всё равно ведь должен быть 1, или я не прав? |
||
04.02.2013, 16:16 | #32 |
Пользователь
Регистрация: 02.02.2013
Сообщений: 44
|
наверное не смогу сделать этот механизм
|
04.02.2013, 21:59 | #33 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Наблюдая тихо за всем этим, мне Вас стало жаль, вас быстро посадили.
Я бы не стал этого делать. Не каждому от этого ощущения хорошо. Совершенству нет. Пределу нет. Это язык С++. Написать в С++ можно по разному любую задачу. Этим он и интересен и по сей день на плову. Многие языки пытаются его дублировать.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
|
04.02.2013, 23:20 | #34 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Поможем разобраться) Я покажу кое-что попроще, а именно, как проверить, что переданный тип является классом (или структурой, что в C++ почти то же самое).
Нам пригодится такая штука, как SFINAE: substitution failure is not an error (ошибка подстановки - не ошибка, грубо говоря). Когда мы вызываем функцию, и у нее есть несколько шаблонных перегрузок, тестируются все из них, и если для какой-то просто не удалось вывести сигнатуру функции, то вариант просто отметается. Пример: Код:
Нам нужно будет как-нибудь узнать, какой из вариантов функции выбрал компилятор. Мы это сделаем по возвращаемому значению функции. А именно, два варианта функции будут возвращать типы разного размера, а в результате мы просто проверим размер. Нам поможет одно замечательное свойство оператора sizeof (как и оператора decltype, появившегося в C++11) - он не вычисляет выражение внутри, только его тип. Код:
Форматируйте код, будьте людьми.
|
05.02.2013, 07:18 | #35 |
Пользователь
Регистрация: 02.02.2013
Сообщений: 44
|
оказывается я ещё не окончил курс)
по программе уже должны были вчера экзамен сдавать, а нет, учили последовательные контейнеры, узнал прок контейнер vector может ещё дойду до этой темы и сделаю всё таки тест)) |
05.02.2013, 11:17 | #36 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Если Вы и про vector не знали...
Без обид, тут не Ваша вина, и не курса, просто язык такой, но Вам еще учиться и учиться. Собственно, всем, кто на нем пишет, еще учиться и учиться) Практикуйтесь, практикуйтесь, читайте статьи, практикуйтесь. На пути Вам могут встретиться другие языки, которые, на мой взгляд, в разы проще в изучении, и Вам придется решать, чего Вы хотите. В общем, перед Вами безграничный мир, так сказать)
Форматируйте код, будьте людьми.
|
05.02.2013, 15:43 | #37 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Granus
Цитата:
а так прикольно, да Похожий или такой же изворот я вроде бы у Саттера видел (со small и big), а может и не у него. Этот пример я бы так переписал: Код:
------добавил однако, использовать чуть менее удобнее ) Последний раз редактировалось rrrFer; 05.02.2013 в 16:15. |
|
05.02.2013, 16:08 | #38 | |
Пользователь
Регистрация: 02.02.2013
Сообщений: 44
|
Цитата:
я понимаю что С++ гибкий, но как Вы сказал, мне набираться опыта надо, иначе толку от того что знаю тут на форуме проще набраться опыта |
|
05.02.2013, 23:07 | #39 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Цитата:
Кстати, _Bers, я тут подумал насчет этого. Нормальные компиляторы же сами удаляют константы, если никто не пытается взять их адрес или сделать еще что-нибудь, подразумевающее их существование в рантайме. Поэтому мы вроде как ничего не теряем, только слегка повышаем читабельность и понимание.
Форматируйте код, будьте людьми.
Последний раз редактировалось Granus; 05.02.2013 в 23:10. |
|
05.02.2013, 23:43 | #40 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Мне енумы нравятся тем, что они как бы сообщают читателю: "это не член данных. Это просто значение времени компиляции" А если это статик, то я уже призадумаюсь. Известно, что адрес статического члена гарантированно уникален.И если взять этот адрес, то вы получите некое уникальное число. Которое в свою очередь, может выступать в качестве идентификатора объекта, или его класса. Или такой вариант: в декларацию класса загоняется статическая безымянная (но имеющая константное имя) структура. В эту структуру можно чего угодно дополнительно воткнуть. Так изготавливают метаданные на плюсах. Всякие контракты запихиваются. Это может быть дело вкуса, но если я встречаю статическую константу, то я задумываюсь, зачем она нужна. Потому что в особенности в контексте мета-программирования там столько разных трюков бывает. А енумы.. они простые. С ними дофига не сделаешь) Поэтому, мне они читабельнее видятся) |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
с чего начиНАТЬ С/С++!!!! | dk118 | Помощь студентам | 0 | 05.12.2012 01:22 |
С чего начинать | leonidsm | Свободное общение | 4 | 06.10.2012 19:37 |
Какой язык лучше всего выбрать после завершения изучения языка Паскаль. | VektorAB | Помощь студентам | 4 | 09.07.2010 07:16 |
С чего начинать? | Shadol | Свободное общение | 6 | 24.11.2009 11:46 |
С++ ЧЕГО НАЧИНАТЬ !!! | geniy | Общие вопросы C/C++ | 12 | 03.09.2007 10:50 |