2017-04-06 102 views
0

我已在ConfigureManager.h類聲明這樣之前宣佈靜態常量變量之外聲明爲static const變量:無法訪問類

static const std::string CONFIGURE_FILE_PATH = "./abc.conf"; 
class ConfigureManager: private boost::noncopyable 
{ 
... 
}; 

後來,當我試圖訪問它從ConfigureManager.cpp類的方法,它給我分段錯誤的錯誤。

#include "ConfigureManager.h" 
void ConfigureManager::xyz() 
{ 
    std::cout << "configureFilePath " << CONFIGURE_FILE_PATH << std::endl; 
} 

我在Ubuntu環境中使用g ++編譯器。

+1

問題在代碼中的其他地方。 –

+0

是在main之前靜態初始化時調用的'xyz'嗎? –

回答

0

我沒有插入,編譯和運行你的代碼的問題。該字符串被髮送到控制檯。發佈錯誤信息或更多的代碼...

0

不知道你使用的是什麼版本的g ++,但是有沒有什麼理由你沒有將它定義爲靜態const char *,然後將其定義爲「。/abc.conf「中的cpp?

如果是C++ 11,您可以使用initalizer列表在頭文件中專門定義它。 static const std :: string CONFIGURE_FILE_PATH = {「./abc.conf」};