Fehler Meldung wegen Vektoriterator
-
Was passt hier nicht?
double func(const vector<double> &temp) { double counter = 0; for(vector<double>::const_iterator start = temp.begin; start != temp.end(); ++start) { counter = counter + *start; } return counter; }error: conversion from
<unknown type>' to non-scalar type__gnu_cxx::__normal_iterator<const double*, std::vector<double, std::allocator<double> > >' requestedMfG
Stromberg
-
Versuchs mal so:
for(vector<double>::const_iterator start = temp.begin, end_it = tmp.end(); start != end_it; ++start)Vielleicht hat gcc ein Problem damit const_iterator mit iterator zu vergleichen
-
Edit:
ich seh grad, du hast die Klammern bei tmp.begin*()** vergessen. Tippfehler?
-
asdfasd schrieb:
Edit:
ich seh grad, du hast die Klammern bei tmp.begin*()** vergessen.Das ist auch der Grund für die Fehlermeldung. begin ist überladen und referenziert beide Versionen, const und nicht-const. Deswegen schreibt der GCC auch etwas von "<unknown type>". Aber eine viel sinnigere Fehlermeldung wäre gewesen: "result of non-static element function access ("begin") can only be used in combination with the function call operator". Das sagt zumindest der C++ Standard. Der GCC hat allerdings eine Erweiterung drin, die tmp.begin per reinterpret_cast zu einem "normalen" Funktionszeiger casten lässt, weswegen er tmp.begin ohne () erlaub.
Gruß,
SP