Gistrec icon

Access to private value [reinterpret_cast]

Gistrec | PRO | 01/11/18 12:10:16 PM UTC | 0 ⭐ | 776 👁️ | Never ⏰ | []
C++ |

1.8 KB

|

None

|

0 👍

/

0 👎

/*
struct Cls {
    Cls(char c, double d, int i);
private:
    char c;
    double d;
    int i;
};
 
Как видно, все поля этого класса закрытые, ваша задача реализовать несколько функций, которые дают полный доступ к этим полям (см. шаблон кода), несмотря на то, что они закрытые.
*/
 
struct FakeCls {
    FakeCls(char c, double d, int i) {
        this->c = c;
        this->d = d;
        this->i = i;
    }
public:
    char c;
    double d;
    int i;
};
 
// Эта функция должна предоставить доступ к полю c объекта cls.
// Обратите внимание, что возвращается ссылка на char, т. е.
// доступ предоставляется на чтение и запись.
char &get_c(Cls &cls) {
    FakeCls* fakeCls = reinterpret_cast<FakeCls*>(&cls);
    return fakeCls->c;
}
 
// Эта функция должна предоставить доступ к полю d объекта cls.
// Обратите внимание, что возвращается ссылка на double, т. е.
// доступ предоставляется на чтение и запись.
double &get_d(Cls &cls) {
    FakeCls* fakeCls = reinterpret_cast<FakeCls*>(&cls);
    return fakeCls->d;
}
 
// Эта функция должна предоставить доступ к полю i объекта cls.
// Обратите внимание, что возвращается ссылка на int, т. е.
// доступ предоставляется на чтение и запись.
int &get_i(Cls &cls) {
    FakeCls* fakeCls = reinterpret_cast<FakeCls*>(&cls);
    return fakeCls->i;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎