boost::tuple und iostream [gelöst]



  • Hallo,
    ich habe folgendes Problem:

    for (set<boost::tuple<UncompressedVector, UncompressedVector>, twoTupleOfUncompressedVectorLess>::iterator i=valid2_6.begin(); i!=valid2_6.end(); i++)
    {
        cout << (i->get<0>()); // Zeile verursacht Problem
    }
    

    Den Fehler, den der g++ auswirft, ist folgender

    lattice_main.cpp:652: error: no match for 'operator<<' in 'std::cout << i. std::_Rb_tree_const_iterator<_Tp>::operator-> [with _Tp = boost::tuples::tuple<UncompressedVector, UncompressedVector, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>]()->boost::tuples::tuple<UncompressedVector, UncompressedVector, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>::<anonymous>.boost::tuples::cons<HT, TT>::get [with int N = 0, HT = UncompressedVector, TT = boost::tuples::cons<UncompressedVector, boost::tuples::null_type>]()'

    Ich weiß, dass der Code von

    std::ostream & operator<<(std::ostream & out, UncompressedVector& uv)
    

    recht zuverlässig funktioniert, daher gehe ich nicht davon aus, dass hier das Problem besteht.

    Was mache ich also falsch?

    P. S.: Was ich schon probiert habe:

    cout << ((*i).get<0>());
    cout << ((*i).template get<0>());
    cout << (i->template get<0>());
    

    (bis auf mögliche Vertipper, die ich mir vorbehalte, half dies nichts)


  • Mod

    wolfgke schrieb:

    Ich weiß, dass der Code von

    std::ostream & operator<<(std::ostream & out, UncompressedVector& uv)
    

    recht zuverlässig funktioniert, daher gehe ich nicht davon aus, dass hier das Problem besteht.

    Es fehlt wohl ein const

    std::ostream & operator<<(std::ostream & out, const UncompressedVector& uv)
    


  • Danke, das löst das Problem.


Anmelden zum Antworten