char * an eine Funktion
-
Ich bekomme beim unteren Code einen Fehler, wie kann ich name1 auf name verweisen lassen?
lg und vielen Dank für die Antworten,
void Raum::setRaumName(char * name1) { memcpy(this->name, &name1, sizeof(name1)); // hier entsteht eín Fehler }
-
Fehlt da nicht eine 1?
memcpy(this->name,... // hier fehlt soch die 1
-
PollerCPP schrieb:
Ich bekomme beim unteren Code einen Fehler, wie kann ich name1 auf name verweisen lassen?
lg und vielen Dank für die Antworten,
void Raum::setRaumName(char * name1) { memcpy(this->name, &name1, sizeof(name1)); // hier entsteht eín Fehler }void Raum::setRaumName(char * name1, size_t lenname1) { memcpy(this->name, name1, lenname1); // ! }
-
Nö das geht nicht, da stürzt mir das Programm ab,
keine Ahnung wieso;
-
PollerCPP schrieb:
Nö das geht nicht, da stürzt mir das Programm ab,
keine Ahnung wieso;Vielleicht zeigt der Zeiger auf die Speicheradresse 0? Was für eine IDE benutzt du und hast du dir schonmal den Debugger angeschaut?

-
Und wieso überhaupt immer wieder char*? Wenn es keinen guten Grund dagegen gibt, würde ich *immer* std::string bevorzugen.
-
PollerCPP schrieb:
Nö das geht nicht, da stürzt mir das Programm ab,
keine Ahnung wieso;Auch wenn das sehr trivial aussieht und Du, wie The-Kenny schon angemerkt hat, lieber std::string/std::wstring verwenden solltest, sollte Dir Dein Debugger auch ein bisschen Licht hinter das 'keine Ahnung wieso' bringen
.
-
PollerCPP schrieb:
...
void Raum::setRaumName(char * name1) { memcpy(this->name, &name1, sizeof(name1)); // hier entsteht eín Fehler }Ganz einfach:
void Raum::setRaumName(string name1) { name = name1; }Gruß
Simon2.
-
Pff ... also das geht auch damit
Musst nur gucken, das auch this->name groß genug ist:#include <cstring> class Room { char* m_name; public: Room(const char* name) : m_name(new char[std::strlen(name) + 1]) { std::strcpy(m_name, name); } ~Room() { delete [] m_name; } };fertig ^^ Einfacher geht es aber mit std::string ...
#include <string> class Room { std::string m_name; public: Room(std::string const& name) : m_name(name) {} };und fertig

Aja dein std::memcpy-Aufruf sollte eher so aussehen:
std::memcpy(this->name, name1, std::strlen(name1) * sizeof(char));wobei sizeof(char) in dem Fall weggelassen werden kann, da das 1 ist.
Header ist übrigens <cstring>