STL做类的静态成员变量时,必须使用常量初始化,无法使用insert等方法进行初始化。
例如:
std::set<int> a = {1, 23};
class AsianLanguagesType
{
public:
static std::set<int> asian_languages_type_set_;
// Forbidden use
AsianLanguagesType()=delete;
AsianLanguagesType(const AsianLanguagesType& asian_languages_type)=delete;
AsianLanguagesType& operator=(const AsianLanguagesType& asian_languages_type)=delete;
};
方法1:正确的初始化方法:
std::set<int> AsianLanguagesType::asian_languages_type_set_ = a;
方法2:错误的初始化方法:
std::set<int> AsianLanguagesType::asian_languages_type_set_.insert(1); // 报错
方法2之所以报错,原因在于静态成员变量是在编译的时候初始化,必须使用全局变量,而方法2是直接调用成员函数初始化。