![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| victor79 |
|
||||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
компилятор mingw 4.6.2 выдает ошибку:
contr.cpp: In member function 'void t_control::exclude_from_owner()': contr.cpp:68:74: error: no matching function for call to 'list_item_exclude(t_control*&, t_control* const)' contr.cpp:68:74: note: candidate is: item_excl.h:10:4: note: template<class T, class fn> T* list_item_exclude(T*&, T*) есть функция:
и есть ее вызов:
в чем проблема? |
||||
|
|||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Я не особо спец, но кажись struct t_prev не является объектом типа "t_control* const"
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| victor79 |
|
|||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
вы не про то говорите.
там this является t_control, а t_prev используется только для ссылки на свойство t_control::prev_control. там какая-то ирунда с объявление шаблона или с вызовом. Он в ошибке какую-то непонятную конст приписывает: contr.cpp:68:74: error: no matching function for call to 'list_item_exclude(t_control*&, t_control* const)' |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Ну, сделайте шаблон для const. или приведение типа. Там и определите, может this и является const
Это сообщение отредактировал(а) akizelokro - 23.7.2013, 19:54 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Здесь не указатель на константный объект, а само значение указателя константа. Вы явно что-то не договариваете... Это сообщение отредактировал(а) volatile - 24.7.2013, 00:08 |
|||
|
||||
| victor79 |
|
||||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
в итоге переделал на макрос:
а вызов получается:
описание функции то же, но компилит нормально. Значит глюк в компиляции шаблонов. |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| victor79 |
|
|||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
не так, но не совсем не так. Я проверил Ваш вариант - да компилится. В моем случае структура t_prev была локальной в функции. Т.е. проблема в сообщении об ошибке - было какое-то сообщение, когда в шаблон передается локальный класс. И в моем варианте должно было быть сообщение, но другое. А он выдал какое-то совершено левое сообщение. Т.е. глюк в том, что за сообщение выдается.
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Главная ошибка любого компилятора в том, что он компилирует то, что програмист написал, а не то, о чем програмист думал |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Подтверждаю. Если перенести определение struct t_prev внутрь функции, которая вызывает list_item_exclude, то ошибка присутствует. Причём именно та, о которой говорил ТС.
Пруф Если вынести определение struct t_prev наружу, то всё компилится (см. моё предыдущее сообщение) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |