There is a learning task in which you need to access the private fields of the class from the outside. struct Cls given initially. I nagulit that you need to create a copy of the structure, but with public methods, and then through it to knock on the original one. The question is how to implement it? How can I return a link to a private field?
struct Cls { Cls(char c, double d, int i); private: char c; double d; int i; }; struct B { B(char c, double d, int i); public: char c1; double d1; int i1; }; // Эта функция должна предоставить доступ к полю c объекта cls. // Обратите внимание, что возвращается ссылка на char, т. е. // доступ предоставляется на чтение и запись. char &get_c(Cls &cls) { return ((B*)(&cls))->c1 = 'p'; } // Эта функция должна предоставить доступ к полю d объекта cls. // Обратите внимание, что возвращается ссылка на double, т. е. // доступ предоставляется на чтение и запись. double &get_d(Cls &cls) { /* ... */ } // Эта функция должна предоставить доступ к полю i объекта cls. // Обратите внимание, что возвращается ссылка на int, т. е. // доступ предоставляется на чтение и запись. int &get_i(Cls &cls) { /* ... */ } int main() { Cls cls('h', 2.0, 3); char ch = get_c(&cls); cout << ch << endl; }
#define private public- zenden2k