読者です 読者をやめる 読者になる 読者になる

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

特に意味もないけどなんとなく書いてみた。
上のコードはメンバ変数だけだけどメンバ関数も同様に使用することができる。
ちなみにこういう手段を使わないで無理やりアクセスする方法もあったりする。