我試圖實例化這樣一組字符串:C++ 11均勻初始化:字段初始化不恆定
class POI {
public:
...
static const std::set<std::string> TYPES { "restaurant", "education", "financial", "health", "culture", "other" };
...
}
現在,我這樣做時,我得到這些錯誤(全部在這條線):
error: field initializer is not constant
static const std::set<std::string> TYPES { "restaurant", "education", "financial", "health", "culture", "other" };
error: in-class initialization of static data member 'const std::set<std::basic_string<char> > POI::TYPES' of non-literal type
error: non-constant in-class initialization invalid for static member 'POI::TYPES'
error: (an out of class initialization is required)
error: 'POI::TYPES' cannot be initialized by a non-constant expression when being declared
這對我的眼睛是有意義的,如果我假設集合內的字符串不被視爲常量。這真的是問題嗎?不幸的是,我無法找到一種方法來將這些字符串作爲const聲明在初始化程序中。這可能嗎?
NSDMI並不適用於靜態成員 –
這就是N代表:-)(** N ** *上* S ** tatic ** D ** ata ** M ** ember ** I ** nitializer)。 – Jarod42