//被获取private成员的类
class Cat{
public:
    Cat(string name):_name(name){};
    template <class T>
    void run(T t){};
private:
    string _name;
};
//法一
namespace {
    struct Y{};
}
template <>
void Cat::run(Y y){//该函数可以随便由客户编写,且不会影响其他使用该类的客户.
    cout<<_name<<endl;
};
//法二
class Fake_cat{
public:
    string _name;
};


int main(){
    Cat blue_cat("kk");

    //法一
    Y tmp;
    blue_cat.run(tmp);
    //法二
    Fake_cat* fake = reinterpret_cast<Fake_cat*>(&blue_cat);
    cout<<fake->_name<<endl;
}