C++ 如何使用静态字符
我目前正在处理一个wxWidgets项目,其中我必须将wxString复制到一个静态c字符串,该字符串可以在程序的生命周期内保存该值。基本上,我的头文件和源文件如下所示:C++ 如何使用静态字符,c++,C++,我目前正在处理一个wxWidgets项目,其中我必须将wxString复制到一个静态c字符串,该字符串可以在程序的生命周期内保存该值。基本上,我的头文件和源文件如下所示: *****************PortDialog.h***************** ... static char *portName; -----------------------end 源文件为 ***************PortDialog.cpp***************** . . .
*****************PortDialog.h*****************
...
static char *portName;
-----------------------end
源文件为
***************PortDialog.cpp*****************
.
.
.
wxString str = "COM1";
strcpy(portName, (const char*)str.mbc_str());
---------------------end
但是,我遇到了以下链接错误
error LNK2001: unresolved external symbol "public: static char * portDialog::eportName" (?portName@portDialog@@2PADA)
有人能解释一下我在这里犯了什么错误吗?为上述目的使用
静态字符*
是否正确?头文件中声明的静态变量应在cpp文件中初始化。除了您收到的关于链接器错误的解释之外,请参见,您还应该知道,您不能调用目标为char*
的strcpy
,因为它没有分配内存来保存源字符串。它可以编译(和链接),但在运行时可以做任何事情。静态变量应该在cpp文件中声明
char* PortDialog::PortName = NULL;
像您一样,使用范围解析运算符访问类的方法(函数)
void PortDialog::SomeFunction()
{
//Code Goes here
}