class myFun(Employee obj, String attribute)
{
//return proper attribute value without using conditions like If-Else, ternary or
// conditional operators like && etc.
}
现在如果我调用:
myFun(obj, “name”);
那么这个函数应该从作为参数传递的对象“obj”中返回员工的名字。因此,根据属性值的名称,它应该返回该对象的属性值。
有没有什么方法可以在不使用 if 条件或 switch 语句的情况下在 C++ 中做到这一点?我知道在 Python 中我们可以使用 getattr。
最佳答案
您需要实现自己的 reflection - 样的行为。例如,您可以在对象内部有一个映射,您可以在其中注册每个属性的名称,也许还有一个仿函数来获取值(或其他东西)。
换句话说,它是可行的,但不受语言支持,因此它不会简短、简单、自动或对您代码的其他读者来说不一定非常直观。
关于属性名称为字符串的 C++ 对象输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133944/