Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dim0n Гость
|
Добавлено: Вс Дек 02 2001 22:12 Заголовок сообщения: указатели на функции (visual c++) |
|
|
Есть класс диалогового окна СDlg11:
Dlg11.h:
float MAX(float, float, float);
void Output(float (*func)(float, float, float));
Dlg11.cpp: ....
Output(MAX); ....
void CDlg11::Output(float (*func)(float, float, float))
{
....
if (m_X == (*func)(m_X, m_Y, m_Z)){ }
....
}
error C2664: 'Output' : cannot convert parameter 1 from 'float (float,float,float)' to 'float (__cdecl *)(float,float,float)'
None of the functions with this name in scope match the target type
Error executing cl.exe
Что за %"?*!
Помогите пожалуйста решить проблему! |
|
Вернуться к началу |
|
|
andrew
Зарегистрирован: 18.02.2002 Сообщения: 69
|
Добавлено: Пн Дек 03 2001 07:27 Заголовок сообщения: Re: указатели на функции (visual c++) |
|
|
1) Ты функцию MAX определяешь внутри класса?
2) Попробуй явное приведение типов: Output ((*float(float,..)MAX); |
|
Вернуться к началу |
|
|
Ilia Гость
|
Добавлено: Пн Дек 03 2001 17:25 Заголовок сообщения: Re: указатели на функции (visual c++) |
|
|
Попробуй описать прототип в typedef |
|
Вернуться к началу |
|
|
Overdrive
Зарегистрирован: 24.10.2001 Сообщения: 16 Откуда: Самара
|
Добавлено: Пн Дек 03 2001 21:55 Заголовок сообщения: Странно... |
|
|
Странно, а у меня Visual C++ 6.0 ошибок не выдал, хотя я все точно скопировал. Можете попробовать в строке, дающей ошибку заменить
if (m_X == (*func)(m_X, m_Y, m_Z)){ }
на
if (m_X == func(m_X, m_Y, m_Z)){ }
Это тоже работает, возможно заработает и у вас. Удачи! |
|
Вернуться к началу |
|
|
|