Ошибка события и списка аргументов

#c

#c

Вопрос:

У меня проблема с библиотекой CEGUI

у меня есть класс для события (щелчок, нажатие клавиши … и т.д.)

 class GUI_Event
{
private:
bool (*_L_Mouse_Click_DoFunction ) () ; 

protected:
bool onClick(const EventArgs amp;Args)
 { 
   return _L_Mouse_Click_DoFunction();
 }


public:
SetFunctionClick(bool Function ())  /// i forget ()
 { 
  _L_Mouse_Click_DoFunction = Function ;
  }

};
  

у меня есть другой класс с именем button для создания кнопки и окна

 cass GUI_Button : public GUI_Event
{
public:
void CreateButton(//some argument) ; 
};

void GUI_Button::CreateButton(//some argument)
{
...
.
..
..

_Frame_Window->subscribeEvent ( FrameWindow::EventMouseClick , Event::Subscriber (amp;GUI_Window::onClick ));//error



}
  

теперь, если я скомпилирую этот код, я получу следующую ошибку

ошибка C2064: термин не вычисляется для функции, принимающей 1 аргумент c:cegui-sdk-0.7.5-vc10ceguiincludeceguifunctorcopyslot.h 51

Ответ №1:

Проверьте эту строку,

 SetFunctionClick(bool Function) { _L_Mouse_Click_DoFunction = Function ;}
  

Член класса _L_Mouse_Click_DoFunction является указателем на функцию. Таким образом, ей может быть назначена только переменная того же типа. Значение Function имеет bool тип.

Вы можете изменить это на,

 SetFunctionClick(bool (*Function) ())