error: call to non-static member function without an object argument
1.在c++中,如果一个类中有个静态方法,那么这个静态方法中调用的也是静态方法
2.在c++中,一个类的普通函数,既可以调用非静态方法,也可以调用静态方法
例如:
DriverOfNet类中有个静态函数 netCallBackData
还有一个非静态函数 ConvertToHex
static void __stdcall netCallBackData(int cardId, char* pData, int length, void *user);
std::string ConvetToHex(char* data, int len);
如果想要在 netCallBackData函数中调用ConvetToHex函数,就会报错,所有要把ConvetToHex函数改成静态函数
class DriverOfNet: public INet, public IEbtNet
{
public:
DriverOfNet();
~DriverOfNet();
/**
* @brief 向下位机下发控制指令
* @param cardid 卡编号
* @param pMsg 指令信息
* @param iLen 指令长度
* @return
*/
int SendMsg(char* msg, int len);
int Connect(const char* ip, int port);
int RegisterRespondCallback(NetCmdCallback call, void* ptr);
int RegisterDataCallback(NetDataCallback call, void* ptr );
int RegisterStatusCallBack(StatusCallback call, void* ptr);
private:
static void __stdcall netCallBackData(int cardId, char* pData, int length, void *user);
static void __stdcall netStatusCallBack(NET_CONNENT_STATE status, void *userData);
static void __stdcall callbackCmdRsp(char* pData, int length, void *user);
static void __stdcall callbackApiStatus(int cardId, char*);
static void __stdcall apiPrintlog(char*);
static void __stdcall callbackNewDevIp(char* newDevIp);
static void __stdcall updateFpgaCompleteCallback(int cardId, int status);
static std::string ConvetToHex(char* data, int len);
private:
int card_id;
std::list<CARD_S> m_cardList;
void* dataPtr ;
NetDataCallback OnSendNetData;
void* cmdPtr;
NetCmdCallback OnSendCmdData;
void* statusPtr;
StatusCallback OnSendStatus;
std::map<int, NetStatus> m_card_status;
EBIT_DEVICE_S* dev;
};
#endif // DRIVEROFNET_H