Advertisement
Gistrec

Access to private value [shift]

Jan 11th, 2018
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. /*
  2. struct Cls {
  3.     Cls(char c, double d, int i);
  4. private:
  5.     char c;
  6.     double d;
  7.     int i;
  8. };
  9.  
  10. Как видно, все поля этого класса закрытые, ваша задача реализовать несколько функций, которые дают полный доступ к этим полям (см. шаблон кода), несмотря на то, что они закрытые.
  11. */
  12.  
  13. // Эта функция должна предоставить доступ к полю c объекта cls.
  14. // Обратите внимание, что возвращается ссылка на char, т. е.
  15. // доступ предоставляется на чтение и запись.
  16. char &get_c(Cls &cls) {
  17.     return *(char*)(&cls);
  18. }
  19.  
  20. // Эта функция должна предоставить доступ к полю d объекта cls.
  21. // Обратите внимание, что возвращается ссылка на double, т. е.
  22. // доступ предоставляется на чтение и запись.
  23. double &get_d(Cls &cls) {
  24.     return *(double*)((char*)(&cls)+8);
  25. }
  26.  
  27. // Эта функция должна предоставить доступ к полю i объекта cls.
  28. // Обратите внимание, что возвращается ссылка на int, т. е.
  29. // доступ предоставляется на чтение и запись.
  30. int &get_i(Cls &cls) {
  31.     return *(int*)((char*)(&cls)+16);
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement