我想存儲一個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結果。投票重新開放... –