Доброе день!
Вопрос в следующем:
Есть
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.
В чем может быть ошибка? И как ее решить?
Здравствуйте, Niten, Вы писали:
N> lpclMyClass = new CMyClass( (CMyClass::_BUFFERIN ) dwBufferIn );
N>при компиляции ошибок не выдает,
N>В чем может быть ошибка? И как ее решить?
попытка во что бы ни было откомпилировать программу, привело к использованию неверного преобразования
пиши
lpclMyClass = new CMyClass( dwBufferIn );
и думай, почему не компилируется.