MFC C ++使用静态成员和编译问题

时间:2012-11-08 17:11:27

标签: c++ oop mfc encapsulation

我有一个类Rules(),它有一个名为m_String的静态公共成员 我使用适当的CString在类中定义该成员 当我想从全局函数中使用该成员时,我使用“Rules :: m_String”
编译时我得到以下错误:

  

Rules.obj:错误LNK2001:未解析的外部符号“public:static class ATL :: CStringT>> Rules :: m_String”(?m_String @ Rules @@ 2V?$ CStringT @ DV?$ StrTraitMFC_DLL @ DV? $ ChTraitsCRT @ D @ ATL @@@@@ ATL @@ A)

也许这意味着规则中设置m_String的函数也应该是静态的?

1 个答案:

答案 0 :(得分:4)

很可能您没有定义Rules::m_String的实例(未声明)并在Rules.cpp编译单元中初始化。

在任何函数定义之外的Rules.cpp中,您是否有类似以下的行?

CString Rules::m_String = CString("Whatever initial value required");

如果没有显示更多代码,其他任何事情都很难说。