boost::lambda - Konstruktor aufrufen
-
Hi!
Wie kann ich folgendes it boost::lambda (o.ä.) realisieren?
const std::vector<vigra::Point2D> cont = voids[i]->getContour(); QVector<QPoint> pp; std::transform(cont.begin(), cont.end(), std::back_inserter(pp), QPoint((*_1).x, (*_1).y));ich möchte also die elemente aus dem einen Vektor in elemente des anderen Vektors umwandeln. So gehts leider nicht, kommt der Fehler hier:
>.\src\TaskVisualizer.cpp(98) : error C2039: 'x' : is not a member of 'boost::lambda::lambda_functor<T>'Kann man das irgendwie machen?
-
Wenn ich das richtig im Kopf habe,
bind(constructor<QPoint>(), bind(&Point2D::x, _1), bind(&Point2D::y, _2))Mit bind und constructor in boost::lambda.
-
Dankeschön! Klappt fast so, nur _1 auch im zweiten Parameter verwenden:
bind(constructor<QPoint>(), bind(&vigra::Point2D::x, _1), bind(&vigra::Point2D::y, _1)));
-
Fragt sich wahrscheinlich nur, ob sich das in Bezug auf Codeverständlichkeit noch lohnt..

-
Da freut man sich jedenfalls auf C++0x built-in lambda expressions.