konstante Referenz auf std::vector<T>



  • Hallo!

    Ich versuche folgendes:

    void Typ::MacheWas() const {...;}
    void blah(const vector<Typ>& vektorRef)
    {
      ...
      vektorRef[i].MacheWas();
    }
    

    Der Compiler meckert: "this-Zeiger kann nicht von 'const std::allocator<_Ty>::value_type' in 'Typ &' konvertiert werden with [_Ty=Typ]"

    Leider verstehe ich nicht warum dies so ist.
    Währe toll wenn mir jemand den Grund dafür erklären könnte und eine Alternative vorschlägt, wie ich eine konstante Referenz auf std::vector<T> übergeben kann und den entsprechenden Zugriff erhalte.

    DANKE!



  • Hi,
    folgender Code klappt mit dem gcc:

    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    class test
    {
    public:
        void machwas() const {cout << "Hallo";}
    };
    
    void f(const vector<test> &tests)
    {
        tests[0].machwas();
    }
    
    int main()
    {
            test t;
            vector<test> tests;
            tests.push_back(t);
            f(tests);
    }
    

    Sorry für den beschissenen Code, aber er zeigt das nötigste.

    KaPtainCugel



  • Das ist doch das Gleiche was ich mache.
    Nur nimmt der MSVC++ 2003 das wie beschrieben nicht entgegen.



  • Also in VS2005 funktionert es. Ich habe aber auch bei der Funktion mach was das const dabei, has hastde aber auch also könnts wohl ein fehler im VC2003 sein.



  • Aber der fehlermeldung nach sieht halt so aus, dass das const bei der aufgerufenen funktion fehlt



  • Bah!

    Sorry - hatte leider die falsche Definition der MacheWas() Funktion in den Augen.
    Die ich nutze war nicht als konstant deklariert.

    Tut mir leid um Eure Zeit.


Anmelden zum Antworten