Rad Studio XE und vector.erase
-
@Jockelx
Was soll ich sagen...
Du hast Recht!
Das compiliert ohne murren!
Ich verstehe aber nicht, warum? (siehe Screenshot)
Vielen Dank für deine Mühen und die Geduld!
wNw
-
@manni66 @Th69 Code überfliegen und dann Maul aufmachen ;-).
Hab es korrigiert.
-
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?
DankeOk, ich muss das Image mit delete löschen.
delete ImgVector[lb_PictureList->ItemIndex];
-
@wNw
Oder du verpackst deine Images in smart pointer wiestd::unique_ptr
oderstd::shared_ptr
. Aber Achtung:std::make_unique
undstd::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 wiestd::unique_ptr
oderstd::shared_ptr
. Aber Achtung:std::make_unique
undstd::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 wiestd::unique_ptr
oderstd::shared_ptr
. Aber Achtung:std::make_unique
undstd::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 wiestd::unique_ptr
oderstd::shared_ptr
. Aber Achtung:std::make_unique
undstd::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!