C++ reinterpret_cast object to string and back -


i discovered reinterpret_cast in c++ , trying learn more it. wrote code:

struct human{     string name;     char gender;     int age;     human(string n, char g, int a) : name(n), gender(g), age(a) {} };  int main() {     human h("john", 'm', 26);     char* s = reinterpret_cast<char*>(&h);     human *hh = reinterpret_cast<human*>(s);     cout << hh->name << " " << hh->gender << " " << hh->age << endl; } 

it works pretty well, expected. want convert char * std::string , string human object:

int main() {     human h("john", 'm', 26);     char* s = reinterpret_cast<char*>(&h);      string str = s;     human *hh = reinterpret_cast<human*>(&str);      cout << hh->name << " " << hh->gender << " " << hh->age << endl; // prints wrong values } 

does have idea overcome ?

thank you.

in second program when do

string str = s; 

you create new object totally unrelated pointer s. getting address str give pointer str, , not "string" contains.

also, using reinterpret_cast way tell compiler "i know doing", , if don't know what's happening undoubtedly march territory of undefined behavior happen when try initialize str "string" pointed s, since it's not string.


Comments

Popular posts from this blog

java - Suppress Jboss version details from HTTP error response -

gridview - Yii2 DataPorivider $totalSum for a column -

Sass watch command compiles .scss files before full sftp upload -