"error : a nonstatic member reference must be relative to a specific object"是什么意思?
what does "error : a nonstatic member reference must be relative to a specific object" mean?
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(...);
^^^^^^
};
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- C++ Singleton - Prevent ::instance() to variable
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- Python str to C++ to Python str
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 当两个成员位于同一类中时出错"a nonstatic member reference must be relative to a specific object"
- 如何解决访问不同功能的"nonstatic member reference must be relative to a specific object"
- "Segfault using proj4 with OpenMP"或"How to use thread-specific globals with OpenMP"
- 为什么一个文件中没有错误,另一个文件中没有错误 - "Non Static Member Reference mush be relative to specific object"
- 在 suse10、"checking whether to enable maintainer-specific portions of Makefiles... no" 下安装 GCC 4.9
- "error : a nonstatic member reference must be relative to a specific object"是什么意思?
- C++ "Error: a nonstatic member reference must be relative to a specific object"