C++ 错误C2440:“类型强制转换”:无法从“重载函数”转换为
我有一段代码,在以前的projet上运行得很好。它的一部分甚至是从一个正在运行的演示项目中复制的,我不知道现在在一个新项目上怎么会出现这个错误。 编译时,我出现以下错误:C++ 错误C2440:“类型强制转换”:无法从“重载函数”转换为,c++,function,visual-studio-2012,casting,C++,Function,Visual Studio 2012,Casting,我有一段代码,在以前的projet上运行得很好。它的一部分甚至是从一个正在运行的演示项目中复制的,我不知道现在在一个新项目上怎么会出现这个错误。 编译时,我出现以下错误: 1>d:\visual studio 2012\netsdk_poc\mfc_netsdk2\mfc_netsdk2\netsdkfunctions.cpp(33): error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'fDis
1>d:\visual studio 2012\netsdk_poc\mfc_netsdk2\mfc_netsdk2\netsdkfunctions.cpp(33): error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'fDisConnect'
守则:
class CNetSDKFunctions{
void __stdcall DisConnectBackCallFunc(LONG lLoginID, char *pchDVRIP,
LONG nDVRPort, DWORD dwUser)
{
CNetSDKFunctions* pThis = (CNetSDKFunctions*)dwUser;
if (pThis == NULL)
{
ASSERT( FALSE );
return ;
}
//pThis->ReConnect(lLoginID, pchDVRIP, nDVRPort);
}
BOOL CNetSDKFunctions::InitSDK()
{
long m_PlayerHandle;
H264_DVR_GetLastError();
H264_DVR_Init(NULL, 0);
//Here it is :
BOOL logResult = H264_DVR_Init( (fDisConnect) DisConnectBackCallFunc, (DWORD) this );
....
}
和fDisConnect定义:
typedef void (CALL_METHOD *fDisConnect)(long lLoginID, char *pchDVRIP, long nDVRPort, unsigned long dwUser);
显然DisConnectBackCallFunc有几个重载版本,您需要使用static_cast来选择所需的版本;我会告诉你,如果你确定了重载,你会选择哪一个。我正在处理一个从头开始的项目,DisConnectBackCallFunc没有重载版本,如果你说的重载是指其他实现,你会调用什么方法并长期解析?我不知道如何实现它。我是C++初学者。