Re: Member function pointer to member function of another class
Praetorian wrote:
[..]
Here are snippets of the actual code:
In FlashDownload.h
#include "BootLoader.h"
#include "BootLoaderDlg.h"
class CFlashDownload
{
public:
/* Constructor/Destructor */
CFlashDownload();
~CFlashDownload();
void FlashDownloadWithUI(void);
Drop the second 'void'. Make it look different from the constructor
and the destructor, which isn't true -- all of them do NOT take any
arguments.
private:
CBootLoaderDlg *m_pBootDlg;
typedef BOOL (CFlashDownload::*FPFlashAbort)();
FPFlashAbort m_fpAbortFlash;
Why is 'm_fpAbortFlash' is a member of CFlashDownload? If you
intend to call it with 'm_pBootDlg' that is of type 'CBootLoaderDlg',
then it would seem logical to make 'FPFlashAbort' to be a typedef
for "a pointer to member of 'CBootLoaderDlg'", no?
BOOL Flash2812InternalRam(FPFlashAbort fpAbortFlash);
};
In BootloaderDlg.h
class CBootLoaderDlg : public CDialog
{
DECLARE_DYNAMIC(CBootLoaderDlg)
public:
BOOL GetDlgCancelledFlag(void) { return m_bDlgCancelled; };
Drop the 'void' please.
private:
BOOL m_bDlgCancelled;
};
In FlashDownload.cpp
void CFlashDownload::FlashDownloadWithUI(void)
Drop the 'void'.
{
if( m_pBootDlg != NULL ) {
AfxMessageBox( _T("Recursive call to FlashDownloadWithUI()
detected") );
AfxThrowUserException();
}
m_pBootDlg = new CBootLoaderDlg();
m_pBootDlg->Create( IDD_MAIN_DLG, AfxGetMainWnd() );
m_fpAbortFlash = &CBootLoaderDlg::GetDlgCancelledFlag;
/* Call flash download function */
Flash2812InternalRam(m_fpAbortFlash);
m_pBootDlg->DestroyWindow();
delete m_pBootDlg;
}
CBootLoaderDlg sets m_bDlgCancelled when the dialog is cancelled
(within its OnCancel()) method).
OK...
Thanks for your help, I really appreciate it. Sorry for this silly
question but you mentioned I should look at section 5.8 of the C++ FAQ
but how do I get to the FAQ?
How long have you been reading this newsgroup?
http://www.parashift.com/c++-faq-lite/
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask