#include <iostream>
using namespace std;
class R {
protected:
    int a;
public:
    int read(void) {
        return a;
    }
};
class RW : public R {
public:
    void write(int _a) {
        a = _a;
    }
};
int main(void) {
    int a;
    R *r = (R *)&a;
    RW *rw = (RW *)&a;
    rw->write(1);
    cout << dec << r->read() << endl;
    cout << dec << rw->read() << endl;
    return 0;
}
I want to make a class that can only read (class R) and a class can read and write (class RW). Is there any reason I should not do this in oop? and also any reason not to use the 'protected' here? Please help me, thanks for any replies!
P.S. I don't want to define duplicated 'private int a;' on both classes, because the offset of 'int a in class RW' and size of 'class RW' is not the same to the 'class R' anymore.