こんなクラスだったら、
class Sample
{
private:
int X;
};
そうすると、外部から X にアクセスできなくなるので、これは違法です。
Sample s;
s.X = 10; // error - private access
しかし、クラスを編集せずにアクセスできるようにすることができます! 私たちがする必要があるのはこれだけです。
#define private public //note this define!
class Sample
{
private:
int X;
};
//outside code
Sample s;
s.X = 10; //no error!
ideone の作業コード: http://www.ideone.com/FaGpZ
つまり、クラス定義の直前、または , の前にそのようなマクロを定義することで、アクセス指定子を変更できます#include <headerfile.h>
。
#define public private //make public private
//or
#define protected private //make protected private
//or
#define so on
C++ (マクロ/アクセス指定子/その他) の問題ではありませんか?
とにかく、このトピックのポイントは次のとおりです。
マクロを使用すると、カプセル化を簡単に破ることができます。アクセス指定子は絶対確実ではありません! 私は正しいですか?