有结构
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" )
和年龄,如果我使用它像
exctract(p , "age")
在c ++中是否可以这样?
答案 0 :(得分:4)
您可以使用指向班级成员的指针。
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
你可以这样使用它:
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;
}
答案 1 :(得分:0)
你可以使用预处理程序滥用,更值得注意的是,不使用字符串比较,这看起来就像你想要做的那样。
#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';
}
但不是我建议这样做。
答案 2 :(得分:-1)
你可以使用char[][]
这可以做到这一点(但可以说有点owerkill)。
或者只是简单for
并检查{{1}}循环中参数的相等性。