i want to use class member function pointer.
i did as below case. but this program terminates with runtime error.
interface ICtlBase
{
virtual ~ICtlBase(){};
virtual void SetName(CString strData) = 0;
virtual void SetID(CString strData) = 0;
};
class CCtlBase : public ICtlBase
{
public:
virtual ~CCtlBase();
virtual void SetName(CString strData);
virtual void SetID(CString strData);
typedef void (CCtlBase::*SetFunction)(CString);
void ExeFunc(SetFunction);
};
void CCtlBase::ExeFunc(SetFunction func)
{
SetFunction setFunction = func;
this->*setFunction("aaaa");
}
class CCtlEdit : public CEdit, public CCtlBase
{
public:
virtual ~CCtlEdit();
virtual void SetText(CString strText);
void Test();
};
void CCtlEdit ::Test()
{
ExeFunc(SetText);
}
when this program run CCtlEdit::Test, this program terminate with runtime
error.
but i modified this program as below.
interface IBase // empty interface
{
};
interface ICtlBase : public IBase
{
virtual ~ICtlBase(){};
virtual void SetName(CString strData) = 0;
virtual void SetID(CString strData) = 0;
};
To my surprise, modified program work well.
only ICtlBase inherits empty interface IBase.
What happened?
please Let me know this situation.