MFC C++ 使用静态成员和编译问题
Posted
技术标签:
【中文标题】MFC C++ 使用静态成员和编译问题【英文标题】:MFC C++ using static member and compiling issue 【发布时间】:2012-11-08 17:11:26 【问题描述】:我有一个类 Rules(),它有一个名为 m_String 的静态公共成员。 我使用适当的 CString 在类中定义该成员。 当我想从全局函数中使用该成员时,我使用“Rules::m_String” 编译时出现以下错误:
Rules.obj:错误 LNK2001:未解析的外部符号“公共:静态类 ATL::CStringT > > Rules::m_String”(?m_String@Rules@@2V?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT @D@ATL@@@@@ATL@@A)
也许这意味着设置 m_String 的规则中的函数也应该是静态的?
【问题讨论】:
这意味着您的代码可能是错误的。你想让我们猜猜你的代码是什么样的吗? 你确定你没有混淆声明和定义? 不!访问Rules::m_String
的函数不需要是静态的。错误表示符号未定义且无法链接!
你好,我不喜欢这个 -1 不显示代码,因为它是周末,我们在以色列不工作,我没有看到你请求代码.. 没关系,祝你度过愉快的一周
【参考方案1】:
很可能您没有在您的Rules.cpp
编译单元中定义(未声明)和初始化Rules::m_String
的实例。
您的Rules.cpp
在任何函数定义之外是否有类似以下的行?
CString Rules::m_String = CString("Whatever initial value required");
如果没有显示更多代码,其他任何事情都很难说。
【讨论】:
以上是关于MFC C++ 使用静态成员和编译问题的主要内容,如果未能解决你的问题,请参考以下文章