动态设置要提取的参数
Dynamicly setting which parameter to extract
有结构
struct Person{
Person(int a , int i):age(a),id(i){};
int age;
int id;
}
是可能的传递哪个参数提取作为参数在函数?就像
int extract( Person * p , param ){
return p -> param;
}
如果像
那样使用,它将返回idextract( p , "id" )
和age如果我像
那样使用exctract(p , "age")
在c++中可能有这样的东西吗?
可以使用指针指向类成员。
struct Person{
Person(int a , int i):age(a),id(i){};
int age;
int id;
};
int extract(Person* p, int Person::* param)
{
return p->*param;
}
,你可以这样使用:
extract(p, &Person::id);
演示您可以通过滥用预处理器来做到这一点,更值得注意的是,不使用字符串比较,这似乎是您想要做的。
#include <iostream>
#define extract(p, i) (p->i)
struct Person{
int age;
int id;
};
int main() {
Person p;
p.age = 100;
p.id = 30;
std::cout << extract((&p), id) << 'n' << extract((&p), age) << 'n';
}
我并不建议这样做。
您可以使用Map<char*, int>
,它完全可以做到这一点(但有争议的是有点过度)。或者只是简单的char[][]
,并在for
循环中检查参数是否相等。
相关文章:
- 将不同类型的模板参数包提取到双精度向量中会产生警告
- 如何提取模板参数中传递的类型
- C/C++预处理器:提取每秒的可变参数
- C++ 模板提取布尔参数
- 从模板参数的模板参数中提取值
- 使用C++元编程提取 C 函数的参数("Practical C++ Metaprogramming" 中的示例)
- 如何定义变体<x,y,z>提取模板参数的子类型
- 使用命令行参数从TXT文件中提取并在C 中运行特定类
- 为什么我只从可变参数模板中提取一个值?
- 提取模板参数的值
- C++从函数签名中提取参数
- 每个新客户端的 GStreamer 和 URI 查询参数提取
- 从文件名中提取文件名,路径来自参数
- 从参数包中提取成员类型
- 是否保证标准提取运算符>>在失败时不会更改参数?
- 从boost ::函数中提取参数
- 从结构中提取指针参数
- 如何实现递归"using"/提取模板参数
- 制作解析器以提取函数名称、参数、返回类型
- 从net.connman.Manager的GetService方法动态提取D-Bus参数和对象路径