1
在我的規則之一中有一個以stl容器作爲參數的qi :: locals <>。當我編譯我的程序沒有BOOST_SPIRIT_QI_DEBUG時,一切正常。但是當我打開BOOST_SPIRIT_QI_DEBUG時,程序無法編譯,因爲缺少運算符< <。如何定義boost :: spirit :: qi和std :: list容器的流式運算符
簡單的代碼片段:
typedef std::list<int> TlstValues;
template <typename Iterator, typename Skipper>
struct G_test : qi::grammar<Iterator, Skipper>
{
...
G_test() : G_test::base_type(rule_test)
{
...
BOOST_SPIRIT_DEBUG_NODE(rule_test);
}
qi::rule<Iterator, qi::locals<TlstValues>, Skipper> rule_test;
}
錯誤:
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'TlstExpressionItems' (or there is no acceptable conversion)
我試圖定義流運營商TlstValues,但沒有效果。錯誤仍然是一樣的。我的操作定義:
std::ostream& operator << (std::ostream& os, TlstValues & z)
{
return os;
}
可有人請告訴我如何定義所需的操作人員進行BOOST_SPIRIT_DEBUG工作?
感謝和問候 裏克
謝謝!我嘗試了一個std命名空間的解決方案,它的工作原理。謝謝。 – Rick 2011-03-13 08:45:17