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