//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++ 反射
最新推荐文章于 2025-11-17 08:14:53 发布
本文介绍了一个使用C++实现的简单反射机制示例。通过模板元编程的方式定义了一个通用的反射回调类`refback`,并针对特定类型`a`实现了特化版本,能够根据字符串名称获取类成员指针。主函数展示了如何利用这一机制获取并输出类`a`中名为`val`的成员变量的值。
1168

被折叠的 条评论
为什么被折叠?



