当前位置:网站首页>Accessing private members using templates

Accessing private members using templates

2022-04-23 18:52:00 Brick Porter

#include <iostream>

class B {
    int aa = 0,bb=3;
    int a=10;
public:
    void print()
    {
        std::cout << "a=" << a << std::endl;
    }
};
typedef int B::* stolen_mem_ptr;
template<stolen_mem_ptr MemPtr>
class Robber {
    friend stolen_mem_ptr steal() {
        return MemPtr;
    }
};
template class Robber<&B::a>;
stolen_mem_ptr steal();

int main()
{
    B b;
    b.print();
    auto accessor = steal();
    b.*accessor = 100;
    b.print();
    std::cout << "Hello World!\n";
}

版权声明
本文为[Brick Porter]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204210603257607.html