如何使用静态char

时间:2013-02-22 13:58:51

标签: c++

我目前正在使用 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)

有人可以向我解释我在这里犯的错误是什么吗?将static char *用于上述目的是否正确?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

除了您收到的关于链接器错误的解释之外,您还应该知道您不能将目标作为strcpy的{​​{1}}调用,而char *尚未分配内存来保存源字符串。它会编译(和链接)但在运行时可以做任何事情。

答案 2 :(得分:0)

静态变量应该在cpp文件中声明

char* PortDialog::PortName = NULL;

就像使用Scope Resolution Operator

访问类的方法(函数)一样
void PortDialog::SomeFunction()
{
  //Code Goes here
}