Передача фунции в качестве аргумента
От: Niten  
Дата: 25.04.11 13:17
Оценка:
Доброе день!
Вопрос в следующем:
Есть

class CMyClass {
public:
    typedef DWORD (WINAPI* _BUFFERIN)( LPVOID * );


public:
    CMyClass( _BUFFERIN lpBufferInFunc=NULL );
    virtual ~CMyClass( void );
    _BUFFERIN   dwMyClassBufferIn;
    BOOL    Init();

};

CMyClass::CMyClass(  _BUFFERIN lpBufferInFunc ) 
{
    dwMyClassBufferIn = lpBufferInFunc;
}
CMyClass::~CMyClass(void) 
{
}
BOOL CMyClass::Init( void )
{
    BOOL bRet = TRUE;
    DWORD dwRet = dwMyClassBufferIn( NULL );
    if( dwRet > 0 ){
        bRet = FALSE;
    }
    return bRet;
}

DWORD dwBufferIn( LPVOID *lpvsBuffer );
int _tmain(int argc, _TCHAR* argv[]) 
{
int     iRet = 0;
    lpclMyClass = new CMyClass( (CMyClass::_BUFFERIN ) dwBufferIn );
    lpclMyClass->Init();

    iRet = 0;
    if( lpclMyClass ) {
        delete [] lpclMyClass;
        lpclMyClass = NULL;
    }
    return iRet;
}
//-----------------------------------------------------------------------------
DWORD dwBufferIn( LPVOID *lpvsBuffer ){
DWORD   dwRet = 0;
//~~~~~~~~~~~~~~~~~
    return dwRet;
}

при компиляции ошибок не выдает, но после вызова dwMyClassBufferIn( NULL ) выдает ошибку : Run-Time Check Failure #0 — The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

В чем может быть ошибка? И как ее решить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.