Вы не можете инициализировать переменную внутри класса, потому что технически она еще не определена (только объявлена).
В классе сохраните static const set<char> mySet;
.
Inреализация (т.е. файл .cpp):
const char[] _MyClassSetChars = "ABC";
// Define and initialize the set, using
// the constructor that takes a start and end iterator
const set<char> MyClass::mySet(
_MyClassSetChars,
_MyClassSetChars + sizeof(_MyClassSetChars) / sizeof(_MyClassSetChars[0])
);
Сюда также входит завершающий нулевой символ (\0
) в наборе, что, вероятно, не то, что вы хотите - вместо этого используйте это:
const set<char> MyClass::mySet(
_MyClassSetChars,
_MyClassSetChars + (sizeof(_MyClassSetChars) / sizeof(_MyClassSetChars[0]) - 1)
);
Обратите внимание, что здесь вы можете использовать <cstring>
s strlen()
(согласно Let_Me_Be ответ ) вместо более общей формы выше:
const set<char> MyClass::mySet(
_MyClassSetChars,
_MyClassSetChars + strlen(_MyClassSetChars)
);
Также см. этот вопрос .