Rad Studio XE und vector.erase



  • void func(std::string const& bla){}
    void func(std::vector <std::string> const& v){}
    
    int main()
    {
        int a = 0;
        func(a); // <- hier
    }
    

    Weil mir ein bisschen was daran liegt, dass du es verstehst.
    Der code hier wirft die gleiche Art von Fehler, wie du ihn hast.
    Warum?



  • Ich danke EUCH allen recht herzlich!
    Das bringt mich ein ganzes Stück weiter!
    Habe vorher nur selten vector benutzt.
    Danke!!!



  • Eine Frage habe ich noch:
    Das Image muss ich aber selber aus dem RAM löschen oder übernimmt vector.erase das auch?
    Danke



  • @5cript sagte in Rad Studio XE und vector.erase:

    Weil mir ein bisschen was daran liegt, dass du es verstehst.
    Der code hier wirft die gleiche Art von Fehler, wie du ihn hast.
    Warum?

    Wegen globaler Variable?



  • // 1:
    void func(std::string const& bla){}
    
    // 2:
    void func(std::vector <std::string> const& v){}
    
    // 3:
    void func(int param){}
    
    int main()
    {
        int a = 0;
        func(a); // <- hier
    }
    

    1 kann er nicht aufrufen, weil 'a' ist kein string,
    2 kann er nicht aurufen, weil 'a' ist kein vector
    3 kann er aufrufen, weil a ist ein integer, und das kann der in die Funktion übergeben.

    Wenn 3 aber nicht existiert, findet er keine Überladung von func, die er aufrufen kann.
    "Keine Übereinstimmung für 'func(int)' gefunden" wird der Fehler dann heißen.



  • @wNw sagte in Rad Studio XE und vector.erase:

    Eine Frage habe ich noch:
    Das Image muss ich aber selber aus dem RAM löschen oder übernimmt vector.erase das auch?
    Danke

    Ok, ich muss das Image mit delete löschen.

    delete ImgVector[lb_PictureList->ItemIndex];
    


  • @wNw
    Oder du verpackst deine Images in smart pointer wie std::unique_ptr oder std::shared_ptr. Aber Achtung: std::make_unique und std::make_shared beißen sich mit der Delphi Speicherverwaltung.
    Obwohl... du hast die XE Version von 2011? Da gibt´s noch keine C++ smart pointer, jedenfalls nicht für Embarcadero.



  • @DocShoe sagte in Rad Studio XE und vector.erase:

    @wNw
    Oder du verpackst deine Images in smart pointer wie std::unique_ptr oder std::shared_ptr. Aber Achtung: std::make_unique und std::make_shared beißen sich mit der Delphi Speicherverwaltung.
    Obwohl... du hast die XE Version von 2011? Da gibt´s noch keine C++ smart pointer, jedenfalls nicht für Embarcadero.

    Dann kann er ja auf boost ausweichen, das gab es da m.E. schon.



  • @Burkhi sagte in Rad Studio XE und vector.erase:

    @DocShoe sagte in Rad Studio XE und vector.erase:

    @wNw
    Oder du verpackst deine Images in smart pointer wie std::unique_ptr oder std::shared_ptr. Aber Achtung: std::make_unique und std::make_shared beißen sich mit der Delphi Speicherverwaltung.
    Obwohl... du hast die XE Version von 2011? Da gibt´s noch keine C++ smart pointer, jedenfalls nicht für Embarcadero.

    Dann kann er ja auf boost ausweichen, das gab es da m.E. schon.

    Boost mit dem RAD Studio zu selbst bauen traue ich dem TE (noch) nicht zu.



  • @DocShoe sagte in Rad Studio XE und vector.erase:

    @Burkhi sagte in Rad Studio XE und vector.erase:

    @DocShoe sagte in Rad Studio XE und vector.erase:

    @wNw
    Oder du verpackst deine Images in smart pointer wie std::unique_ptr oder std::shared_ptr. Aber Achtung: std::make_unique und std::make_shared beißen sich mit der Delphi Speicherverwaltung.
    Obwohl... du hast die XE Version von 2011? Da gibt´s noch keine C++ smart pointer, jedenfalls nicht für Embarcadero.

    Dann kann er ja auf boost ausweichen, das gab es da m.E. schon.

    Boost mit dem RAD Studio zu selbst bauen traue ich dem TE (noch) nicht zu.

    Für shared_ptr braucht man nur die Header. Das könnte noch klappen.



  • Danke nochmal an alle!


Log in to reply