|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.06.2012, 00:13 | #1 |
Новичок
Джуниор
Регистрация: 06.06.2012
Сообщений: 3
|
Вопрос про шаблоны ("нет соответствующей функции для вызова")
Обращаюсь к знатокам шаблонов. Подскажите, пожалуйста, почему не компилится код:
$ cat 1.cc Код:
1.cc: In function ‘void A()’: 1.cc:16: ошибка: нет соответствующей функции для вызова ‘a1abcd(event<MyClass>::const_itera tor&, event<MyClass>::const_iterator&)’ Я уже весь мозг сломал, пытаясь понять в чём причина и как быть. |
06.06.2012, 02:36 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2cyberpunks01
если хочешь, чтобы работал твой код, ты должен вызывать свою шаблонную функцию так: Код:
Код:
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
06.06.2012, 03:46 | #3 |
Новичок
Джуниор
Регистрация: 06.06.2012
Сообщений: 3
|
Да, так оно работает. Но дело в том, что a1abcd - это, на самом деле, operator==. И вызывать его таким образом было бы ну очень неудобно. Значит я правильно понял, что в таком случае компилятор никак не может вывести тип шаблона и operator== (вместо которого в приведённом тестовом коде a1abcd) надо делать обязательно членом?
|
06.06.2012, 11:37 | #4 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2cyberpunks01
Ну я же показал, как можно делать. и да, раз это у тебя operator==, зачем делать его отдельной функцией? сделай функцией-членом
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 06.06.2012 в 12:32. |
07.06.2012, 01:17 | #5 | |
Новичок
Джуниор
Регистрация: 06.06.2012
Сообщений: 3
|
Цитата:
У меня в этом проекте все бинарные операторы сделаны friend-функциями. И если не идти на сделку с совестью, то надо их все переделывать на функции-члены получается (т.к. рассуждение "если класс вложенный, то бинарные операторы надо делать членами, а если нет - то внешними функциями" - это бред какой-то) Во всяком случае спасибо, я понял в чём заключается проблема, хотя и непонятно как её решить безболезненно. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. | воваава | Помощь студентам | 3 | 01.12.2011 12:50 |
если >30 тогда "да" иначе "нет"... DBgrid | Daur | БД в Delphi | 4 | 30.05.2010 16:54 |
Вопрос-прикол. Почему в голосованиях нет "минусов" | grenles | Свободное общение | 2 | 19.03.2010 23:51 |
Нет в русском языке "ложит", есть - "кладет". | mihali4 | Свободное общение | 25 | 01.04.2008 11:19 |