int CPMSifDlg::EncodeAndSend(char *firstName, char *lastName, char *roomNumber, char *userId, char *userFirstName, char *userLastName)
{
...
return 1;
}
extern "C"
{
__declspec(dllexport) int start(char *firstName, char *lastName, char *roomNumber, char *userId, char *userFirstName, char *userLastName)
{
return CPMSifDlg::EncodeAndSend(firstName, lastName, roomNumber, userId, userFirstName, userLastName);
}
}
在线return CPMSifDlg::EncodeAndSend
我有一个错误:错误:非静态成员引用必须相对于特定对象。
什么意思?
EncodeAndSend
不是静态函数,这意味着它可以在类CPMSifDlg
的实例上调用。你不能这样写:
CPMSifDlg::EncodeAndSend(/*...*/); //wrong - EncodeAndSend is not static
它应该被称为:
CPMSifDlg dlg; //create instance, assuming it has default constructor!
dlg.EncodeAndSend(/*...*/); //correct
仅使用类名调用静态函数。
classname::Staicfunction();
非静态函数必须使用对象调用。
classname obj;
obj.Somefunction();
这正是您的错误的含义。由于您的函数是非静态的,因此您必须使用对象引用来调用它。
CPMSifDlg::EncodeAndSend()
方法被声明为非static
,因此必须使用CPMSifDlg
的对象来调用它。
CPMSifDlg obj;
return obj.EncodeAndSend(firstName, lastName, roomNumber, userId, userFirstName, userLastName);
如果EncodeAndSend
不使用/关联对象的任何细节(即 this
(但一般为class CPMSifDlg
然后声明为static
:
class CPMSifDlg {
...
static int EncodeAndSend(...);
^^^^^^
};