struct problem



  • Ethon schrieb:

    Sich nur den Zeiger auf einen string zu merken wird mit Sicherheit auch zu Problemen führen, wenn die Lebenszeit des zugewiesenen Strings abläuft, denn dann hast du einen Zeiger auf einen nicht mehr existierenden String -> Rumms!
    Am besten ersetzt du char* Caption durch std::string Caption.

    Er weist direkt ein zur Compilezeit bekanntes Stringliteral zu, da wird nichts scheppern und er darf sich gerne den Umweg über den Heap sparen. 😉

    Das meinst du jetzt nicht ernst, oder? 😮



  • DocShoe schrieb:

    Ethon schrieb:

    Sich nur den Zeiger auf einen string zu merken wird mit Sicherheit auch zu Problemen führen, wenn die Lebenszeit des zugewiesenen Strings abläuft, denn dann hast du einen Zeiger auf einen nicht mehr existierenden String -> Rumms!
    Am besten ersetzt du char* Caption durch std::string Caption.

    Er weist direkt ein zur Compilezeit bekanntes Stringliteral zu, da wird nichts scheppern und er darf sich gerne den Umweg über den Heap sparen. 😉

    Das meinst du jetzt nicht ernst, oder? 😮

    Doch.

    Schau mal seinen Code an:

    m[1].Caption="Test";
    

    "Test" sitzt in .rdata und bleibt da auch bis zum Programmende, also passt das so.



  • Das war mir schon klar, das das in diesem Fall so ist. Aber eine Klasse undokumentiert so einzuschränken ist grob fahrlässig und ohne triftige Gründe wohl nicht zu rechtfertigen. Daher erstaunt mich dein Einwand etwas.



  • Vor allem sollte man, sofern man diese Einschränkung für gerechtfertigt hält, const char* statt char* nehmen.



  • Auch wenn ich eure Konversation nicht stören möchte , würde ich nun gerne wissen was nun was sein soll und bo nun string oder char oder const char einzusetzen sind



  • Normalerweise und speziell für dynamische Zeichenketten nimmst du std::string . Für Stringliterale kannst du auch const char* nehmen.

    Zu char* mit manueller Speicherverwaltung besteht in C++ unter normalen Umständen kein Anlass.



  • Also so wie es aussieht in dem fall ist eine Zeichenkette angebracht.



  • newbie1337 schrieb:

    Also so wie es aussieht in dem fall ist eine Zeichenkette angebracht.

    Eine weise Erkenntnis, doch was für eine Zeichenkette?



  • string ?



  • string!


Anmelden zum Antworten