//被获取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;
}