属性名称为字符串的 C++ 对象输出

标签 c++ class

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/

相关文章:

c++ - cout stringstream 两次以损坏的 cout 结束(最小示例)

java - 类实例化与通过引用检索

c++ - 模板:父类成员变量在继承类中不可见

java - 导入包的同时也会导入子包吗?

class - 如何将类之间的依赖关系管理到 coffeescript 项目中

c++ - 在类中声明对象的数组大小

c++ - 如何计算结构的偏移量

c++ - 为什么这里需要 std::launder ?

c++ - 如何在 C/C++ 中随机翻转 char 的二进制位

c++ - 在从字符串中读取字符时需要帮助