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> > >' requested

    MfG
    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


Anmelden zum Antworten