我想存储一个boost :: function作为一个静态变量,其中的“引用?”从一个函数中获取。boost :: function静态成员变量
变量是这样的:
static boost::function<void(const wchar_t*, const bool)> s_logMessage;
当我尝试编译我的错误:
error LNK2001: unresolved external symbol "public: static class boost::function Gorbatras_Converter::ConverterApp::s_logMessage" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@A)
我注意到,如果我不使用变量我可以编译它没有这个错误(猜测这是一个编译器优化,因为它没有使用),但只要我尝试使用s_logMessage变量,我得到链接错误。
我的设置s_logMessage的方式是这样的:
const int ConverterApp::RunConverter(boost::function<void(const wchar_t* a_message, const bool a_newLine)> a_logMessage)
{
ConverterApp::s_logMessage = a_logMessage;
...
}
我试着将它设置为一个非静态成员变量,然后它似乎工作。但我需要它作为静态的,否则我可能会把它作为一个参数发送给我,因为它将会是很多功能。
如果你想知道为什么我发送一个日志功能作为参数,那是因为它来自一个单独的程序。
所以我需要帮助的是如何将boost :: function函数保存在静态变量中?
小提示:请注意,在两种情况下都可以*编译*而不会出错。它是*链接器*发布错误(适当时)。 – Angew
您需要在名称空间范围内定义:'boost :: function ConverterApp :: s_logMessage;' –
我不同意这个重复。相关问题要求的不仅仅是解决这个问题所需要解决的问题。首先必须通过文本页面阅读的人不会满足于stackoverflow,并会尝试查看下一个google结果。投票重新开放... –