我想存储一个boost ::功能的静态变量,其中“参考?” 是从一个函数取出。
变量看起来是这样的:
static boost::function<void( const wchar_t*, const bool)> s_logMessage;
当我尝试编译我得到的错误:
错误LNK2001:无法解析的外部符号 “公用:静态类boost ::功能Gorbatras_Converter :: ConverterApp :: s_logMessage”(?s_logMessage @ ConverterApp @ Gorbatras_Converter @@ 2V $ @功能$$ A6AXPB_W_N @ Z @升压@@ 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函数在一个静态变量?