我正在制作一个带有 spirit::qi 的解析器,旨在使其与不同的字符大小兼容。
template < typename Iterator >
struct grammar : qi::grammar < Iterator >
{
grammar () : grammar::base_type ( file, alter_string_size_to < Iterator::value_type > ( _szFile ) )
{
}
qi::rule < Iterator > file;
};
鉴于
alter_string_size_to < Iterator::value_type > ( _szFile )
成功返回指向包含 _szFile 所需字符大小的字符串的指针。
当我编译时
Iterator = std::wstring::const_iterator
我收到以下错误消息
cannot convert parameter 2 from 'unsigned short *' to 'const std::string &'
所以 .. grammar::base_type 只期望 const std::string & 作为第二个参数。我的问题是,我怎样才能告诉 qi::grammar 期望一个带有 Iterators value_type size 的字符串?
提前致谢 !