C++ の private メンバにアクセスする手段
特に面白みもないんだけどメンバ変数のポインタがわかっていればアクセスすることは可能よね、と。
[コード]
#include <iostream> struct X{ auto get_value_ptr(){ return &X::value; } private: int value = 42; }; int main(){ X x; // error // x.value; auto value_ptr = x.get_value_ptr(); // メンバ変数のポインタを介してアクセスすることは可能 std::cout << x.*value_ptr << std::endl; return 0; }
[出力]
42
特に意味もないけどなんとなく書いてみた。
上のコードはメンバ変数だけだけどメンバ関数も同様に使用することができる。
ちなみにこういう手段を使わないで無理やりアクセスする方法もあったりする。