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


Anmelden zum Antworten