Plo*_*uff 1 c++ templates const
我正在使用rapidxml lib.它定义了一个以这种方式解析文件的函数:
template<int Flags>
void parse(Ch *text)
Run Code Online (Sandbox Code Playgroud)
lib提供了const int标志,例如:
const int parse_declaration_node = 0x20;
Run Code Online (Sandbox Code Playgroud)
所以我在我的类中创建了一个指向静态int的指针:
const int * parser_mode;
Run Code Online (Sandbox Code Playgroud)
在类构造函数中,我为它赋值:
parser_mode = &rapidxml::parse_declaration_node;
Run Code Online (Sandbox Code Playgroud)
然后,当我尝试将此const int *作为模板参数用于解析函数时:
tree->parse<parser_mode>(file->data());
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
错误:'GpxSectionData :: parser_mode'不能出现在常量表达式中
这句话的其余部分似乎是正确的,因为:
tree->parse<0>(file->data());
Run Code Online (Sandbox Code Playgroud)
不会产生编译错误......
你能告诉我我在这里失踪了吗?谢谢!
感谢下面的解释,我可能会在课堂上定义:所以我认为这是:
class Myclass {
static const int parser_mode;
[...]
}
static const int Myclass::parser_mode = rapidxml::parse_declaration_node;
Run Code Online (Sandbox Code Playgroud)
template<int Flags> void parse(Ch *text) ... const int * parser_mode;
您的模板采用int模板参数,但您传递的是模板参数int*.类型int和int*不一样.
尝试 tree->parse<rapidxml::parse_declaration_node>(file->data());