//my_code.h
#include<iostream>
#include<string>
using namespace std;
class a{
public:
int val;
int val2;
};
//refback.h (auto gen)
template<typename T>
class refback{
public:
template<typename Tret>
static Tret T::* member(string){
return 0;
}
};
template<>
class refback<a>{
public:
template<typename Tret>
static Tret a::* member(string name){
if(false){}
else if(name=="val"){return &a::val;} //auto gen
else if(name=="val2"){return &a::val2;} //auto gen
else{return 0;}
}
};
//main.cpp
int main(int argc, char** argv){
a aa;
aa.val=42;
cout<<aa.*refback<a>::member<int>("val")<<endl;
return 0;
}
c++ 反射
最新推荐文章于 2024-05-14 10:40:49 发布