我收到错误LNK2001:未解析的外部符号(C++代码)



1( D:\imp\msgList\fun1.cpp

CMLMessage::MLMessageStatus CMLMessage::getInformationBlocks(const TBase::TLocale& fallbackLocale )
{
CDatabaseHelper::setfallBackLocale(fallbackLocale); // setter function
}

2( D:\imp\commonfolder\fun2.cpp

class CDatabaseHelper
{
Public:
static void setfallBackLocale(TBase::TLocale fallbackLocale)
{ 
mfallbackLocale = fallbackLocale;
}
Private:
static TBase::TLocale mfallbackLocale; // class member 
}

编译器给出错误:

error LNK2001: unresolved external symbol "private: static struct TBase::TLocale NTrafficInformation::CDatabaseHelper::mfallbackLocale" (?mfallbackLocale@CDatabaseHelper@NTrafficInformation@@0UTLocale@TBase@@A)

嗨,专家,您对此有什么建议吗?

fun2.cpp中,您需要使用以下内容初始化该静态成员:

TBase::TLocale CDatabaseHelper::mfallbackLocale = TBase::TLocale{"C"};  

其中右侧是产生TLocale的任何有效表达式。 此行应位于类定义之后。

有关声明/定义该静态成员的替代方法,请参阅有关"静态成员"的 cpp首选项页面。

最新更新