![]() |
|
Модераторы: bsa |
![]()
|
|
| Riddik |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Туплю после бессонной ночи наверное.
Есть ф-ия, принимающая указатель на ф-ию:
Собственно, ф-ия:
Вызов первой ф-ии:
Компилятор ругается, что не может конвертировать из void(void) в void (_cdecl *)(void). Что такое? |
||||||
|
|||||||
| Andrew121 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 21.6.2009 Репутация: 1 Всего: 1 |
|
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Ругается точно так же.
Этот проект я делаю на старом компиляторе vc 6.0, может в этом дело? |
|||
|
||||
| Andrew121 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 21.6.2009 Репутация: 1 Всего: 1 |
Мдя...тот компилятор ваще не понятно какого стандарта придерживается Добавлено через 47 секунд Ругается он на "calling conversion". Посмотри как для него это нужно делать... Добавлено через 1 минуту и 25 секунд А почему такой компилятор используешь? |
|||
|
||||
| Andrew121 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 21.6.2009 Репутация: 1 Всего: 1 |
Еще так попробуй:
|
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
На все варианты та же ругань.
Этот компилятор использую по причине того, что давно начал на нём делать и всё устраивало на 100%, на новый переводить очень затратно по причине разной реализации STL, а именно vector, который активно используется. В новой и старой STL по-разному реализованы добавление и удаление элементов в вектор, в новой добавление или удаление элемента влечёт полное переписование всего вектора в другую область памяти, что делает некоторые указатели на его элементы недействительными, а главное, тратит значительно больше ресурсов процессора, а скорость выполнения критична для проекта. Все эти мои выводы вполне могут оказаться бредом, поскольку изучением STL я нормально ещё не занимался, всё на ощупь. |
|||
|
||||
| Andrew121 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 21.6.2009 Репутация: 1 Всего: 1 |
Похоже что так оно и есть.... Абсолютная истина! Но все вектора так и работают! Что-то ты заблуждаешься... В теории, если в вектор добавлен элемент, то прежние итераторы, 50 на 50, будут не валидны! При удалении же, где-то 30 на 70. И не изучай программирование на этом компиляторе. Он очень плохо соответствует стандарту! Потом если пересядишь на современный компилятор, окажется что кроме теории ты ничего не знаешь!!!! Вот тогда ты осознаешь что такое ж*** |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
На современном компиляторе я сижу тоже.
Насчёт vector в старой реализации не уверенн, но многочисленные тесты говорят пока в пользу моих выводов. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Term что такое? тип? или имя функции? в С++ обязательно указывать тип, в отличии от С.
|
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Конечно указывал. Term - функция-член.
|
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Чтоб не было путаницы:
Помогите, почему не хочет работать, сам не могу справиться. Вот полный текст ошибки: "error C2664: 'Term' : cannot convert parametr 2 from 'void (void)' to 'void (_cdecl *)(void)' None of the functions with this name in scope match the target type" |
|||
|
||||
| jonie |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
Обновление-то ставили?) замените это:
на
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Нет, что за обновление и где его взять?
Для моего VC 6 и с void _cdecl Nismo() {...} всё та же песня. |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Хм... просто как пример у jonie и меня компилится... в чём же может быть ошибка...?
Класс c функцией-членом определён в одном файле, а вызывается она в другом... |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Я не совсем точно привёл мой код...
В общем, проблема возникает, когда в качестве параметра ф-ии передаётся адрес ф-ии - члена класса, если свободной ф-ии - то нет проблем. Можно как-нибудь разрешить это? |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |