C++ 如何使用静态字符

C++ 如何使用静态字符,c++,C++,我目前正在处理一个wxWidgets项目,其中我必须将wxString复制到一个静态c字符串,该字符串可以在程序的生命周期内保存该值。基本上,我的头文件和源文件如下所示: *****************PortDialog.h***************** ... static char *portName; -----------------------end 源文件为 ***************PortDialog.cpp***************** . . .

我目前正在处理一个wxWidgets项目,其中我必须将wxString复制到一个静态c字符串,该字符串可以在程序的生命周期内保存该值。基本上,我的头文件和源文件如下所示:

*****************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
}