vector<T> in vector<const T>?
-
Ich hab in einer Methode einen vector<meineKlasse>, alles ist fein, nun muss ich diesen vector an eine andere Methode weitergeben ->
methode(const vector<const meineKlasse> &);Nur meckert er dort, dass er vector<T> nicht in vector<const T> konvertieren kann.
Das gleiche hier:vector<string> a; vector<const string> b(a);Fehler 1 error C2664: 'std::vector<_Ty>::vector(const std::allocator<_Ty> &)': Konvertierung des Parameters 1 von 'std::vector<_Ty>' in 'const std::allocator<_Ty> &' nicht möglich.
Liegt das daran dann der CopyCtor beim kopieren string nicht in const string bekommt?
-
Ja, denn das sind zwei verschiedene Datentypen und es existiert nur ein CopyCtr für vector<T>::vector<T>(const vector<T> &).
Du müßtest dafür dann selber eine Copy-Funktion erstellen (z.B. mittels std::copy).
Warum hast du denn einmal "const" und einmal "non-const" als Parameter?
-
non const ist die erschaffung des vectors und ah, schon gut...
Ich übergebe ne Kopie, da is das ja herzlich latte ob es const ist
Hehe
-
Wenn der ganze Vector const ist sinds die Elemente aber auch. Von daher wäre vector<T> const& evtl. eine Maßnahme

-
das 2. problem kanst du so lösen:
vector<string> a; vector<const string> b(a.begin(),a.end());
-
b7f7 schrieb:
das 2. problem kanst du so lösen:
vector<string> a; vector<const string> b(a.begin(),a.end());Wenn der const string nicht ein paar Anforderungen des vector (Kopierbarkeit der Elemente) verletzen würde, könnte das sogar funktionieren.
@Seikilos: Meintest du nicht eher
const vector<string> b(a);?
-
Ja, ich hab in einem anderen Thread gelernt, dass inneren Elemente automatisch const sind wenn, das Objekt selbst const ist