Frage

Bei dem folgenden Code versuche ich zu verwenden Automatischer Parser für Boost Spirit für eine Sequenz oder zwei Doppel, aber es wird nicht kompiliert.Was mache ich hier falsch?

// file main.cpp

#include <boost/tuple/tuple.hpp>
#include <boost/spirit/include/qi.hpp>

namespace qi = boost::spirit::qi;

int main()
{
    boost::tuple<double, double> p;
    char* i = 0;
    qi::phrase_parse( i, i, p, qi::space );
    // qi::phrase_parse( i, i, qi::double_ >> qi::double_, qi::space, qi::skip_flag::postskip, p );

    return 0;
}

Die auskommentierte Zeile wird kompiliert, also akzeptiert sie boost::tuple<double, double> als Attributtyp von qi::double_ >> qi::double_;der Parser kann jedoch nicht vom Attributtyp abgerufen werden.Warum?

War es hilfreich?

Lösung

Es ist die gleiche Antwort wie in Ihrem andere Frage - verwenden boost::fusion::vector stattdessen.

Andere Tipps

es kompiliert für mich (G ++ 4.6.1 / Boost 1.46.1) Wenn ich Folgendes hinzufüge, enthalten Sie Ihr Programm: generasacodicetagpre.

Ich glaube, dass dies anpasst

http://www.boost.org/doc/libs/1_48_0/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html

graham

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top