Я использую rapidxml lib.
Он определяет функцию для разбора файлов следующим образом:
template<int Flags>
void parse(Ch *text)
Библиотека предоставляет const int
флагов, например:
const int parse_declaration_node = 0x20;
Итак, я создал указатель на статическое целое в моем классе:
const int * parser_mode;
И в конструкторе класса я присвоил ему его значение:
parser_mode = &rapidxml::parse_declaration_node;
Затем, когда я пытаюсь использовать это const int *
в качестве аргумента шаблона для функции разбора:
tree->parse<parser_mode>(file->data());
Я получаю это сообщение об ошибке:
ошибка: «GpxSectionData :: parser_mode» не может появиться в
константа-выражение
Остальная часть утверждения кажется правильной, поскольку:
tree->parse<0>(file->data());
не вызывает ошибку компиляции ...
Не могли бы вы сказать мне, что мне здесь не хватает?
Спасибо!
Благодаря приведенным ниже пояснениям я, вероятно, определю это вне класса:
Поэтому я думаю, что это:
class Myclass {
static const int parser_mode;
[...]
}
static const int Myclass::parser_mode = rapidxml::parse_declaration_node;