クラス関数に別のクラス不明の関数を使用させようとしています。それが理にかなっていることを願っています。私がやろうとしているのは...button1(または宣言されたボタン)がクリックされると、関数Event__MouseClickedの最初のパラメーターに入力された関数(「void関数」)が実行されます。
bool MouseClicked( void ){ /**/ };
namespace XE
{
class Window
{
public:
const char* Title;
};
class Button
{
public:
void Event__MouseClicked( void( *Function )( void ) ) {
if( MouseClicked( ) )
( *Function )( );
}
};
};
class XorrWindow1 : public XE::Window
{
public:
XorrWindow1( void ) {
Initialize( );
}
protected:
~XorrWindow1( void );
private:
XE::Button Button1;
XE::Button Button2;
private:
// EVENT PROTOTYPES
void DoSomething( void );
void RandomFunction( void );
void Initialize( void )
{
// INITIALIZE CONTROLS
// AND OTHER STUFF BELOW
this->Title = "XorrWindow1";
// How can I resolve this problem?
this->Button1.Event__MouseClicked( &XorrWindow1::DoSomething );
this->Button2.Event__MouseClicked( &XorrWindow1::RandomFunction );
};
};
void XorrWindow1::DoSomething( void ) {
::MessageBoxA( NULL, this->Title, "Button1 clicked!", MB_OK );
};
void XorrWindow1::RandomFunction( void ) {
::MessageBoxA( NULL, this->Title, "Button2 clicked!", MB_OK );
};
エラーは次のとおりです。
'XE::Button::Event__MouseClicked' : cannot convert parameter 1 from 'void (__thiscall XorrWindow1::* )(void)' to 'void (__cdecl *)(void)'
エラーの原因は完全に理解しています。しかし、それはクラスWindow1の未知の関数をとることができなければならないので、それを修正する方法がわかりません。