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.