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

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

filehandler - java open files not cleaned, even when the process is killed -

gridview - Yii2 DataPorivider $totalSum for a column -