vector übergabe an function



  • Also hier mal mit copy & paste aus meinem Prog

    struct str
    {
    };
    
    void getAuftrag(std::vector<str>& vec)
    {
    }
    
    std::vector<str> vec;
    getAuftrag(vec);
    

    hab ich was auf dem auge????



  • Generell kann man das auch so lösen:

    struct str
    { 
       typedef std::vector<str> TStrVector;
    };
    
    void getAuftrag(str::TStrVector& vec)
    [...]
    

    Vorteil:
    Du musst nicht immer das vector ausschreiben und hast garantiert überall den selben Typ von vector.
    Und zu deinen Augen:
    Schau in deinen ersten Post :).
    Da steht std::vector<struct str>.



  • benenn mal str nach IchWeissDasDasGeht um ... wenn das immer noch nicht tut guck mal ob du mit VS in der cpp Toolchain bist - das kann ja auch VB und C# und so?



  • padreigh schrieb:

    benenn mal str nach IchWeissDasDasGeht um ... wenn das immer noch nicht tut guck mal ob du mit VS in der cpp Toolchain bist - das kann ja auch VB und C# und so?

    Eh, da würde der Compiler schon über Dateinamen meckern...



  • @Scorcher Ich fische im Trüben - es SOLLTE gehen.

    Was manchmal auch tut, ist bei VS einfach ein neues Projekt aufsetzen, Klassen neu anlegen, Inhalte (copy&paste) rüberkopieren - zeitweise verheddert der sich in seinen eigenen Projektdateien ... ansonsten wechsel auf ein vernünftiges BS 😉



  • klar immer ein hammerargument..ein neues BS



  • Etwas google-Fu hat es mir ermöglicht deine Fehlermeldung zu reproduzieren:

    #include <vector>
    
    using namespace std;
    
    struct str{};
    
    void getAuftrag(vector<str>& v) {
    }
    
    int main() {
       vector<int> test; //anderer template parameter!
       getAuftrag(test);
    }
    

    Wenn du die komplette Fehlermeldung anschaust, sollte danach etwas stehen wie

    with
    [
    _Ty=int
    ]
    and
    [
    _Ty=str
    ]

    Du verwendest wohl 2 unterschiedliche typen für deinen vector, deswegen gehts nicht. Wo das genau ist musst du selbst rausfinden



  • selbst wenn ich nun das & weglasse kommt eine Fehlermeldung die besagt:
    cannot convert from std::vector<_ty> to std::vector<_ty>

    was ja nun irgendwie gar keinen sinn macht warum er das nicht konvertieren kann...



  • Poste doch mal bitte den code.
    Du kannst natürlich nicht einfach

    struct str
    {
    };
    
    void getAuftrag(std::vector<str>& vec)
    {
    }
    
    std::vector<str> vec;
    getAuftrag(vec);
    

    schreiben, wie von dir zuletzt gepostet. Die letzten beiden Zeilen gehören in die main.



  • selbst wenn ich nun das & weglasse kommt eine Fehlermeldung die besagt:
    cannot convert from std::vector<_ty> to std::vector<_ty>

    was ja nun irgendwie gar keinen sinn macht warum er das nicht konvertieren kann...

    Doch, lies dir zum Teufel doch mal die ganze Fehlermeldung durch!

    das _ty vom ersten vector ist nicht dasselbe wie das _ty vom 2.

    Poste doch einfach mal die ganze fehlermeldung, dann kann ichs dir auch genauer sagen.

    Du kannst nunmal in einen vector<int> (nur mal als beispiel) in einen vector<char> umwandeln. Genausowenig wie in eine vector<char>&



  • Du kannst nunmal keinen vector<int>...

    fixed



  • jetzt hab ichs...hab wirklich was auf dem Auge 🙂

    die struct war eine andere....jetzt habe ich auch die fehlermeldung verstanden 🙂

    danke für eure Hinweise 🙂



  • Gern geschehen :>

    Ich ignorier ja auch gerne die Informationen nach der ersten Zeile bei solchen Template-Fehlermeldungen 😉


Anmelden zum Antworten