【问题标题】:access structure members with variables使用变量访问结构成员
【发布时间】:2018-02-16 09:59:58
【问题描述】:

有结构

struct Person{
int age;
string name;
string sex;
};

struct Person p1={23,"alice","male"};

通常我们使用 p1.age 或 p1.name 访问该值 但我想使用变量访问。

string name="p1";
string item="name";

现在我可以使用变量获取 p1.name 的值吗:名称和项目

如果没有,有什么方法可以使用指针。

【问题讨论】:

  • 你想通过这个解决什么问题?有什么用例?您的问题是典型的XY problem,您在其中寻求帮助以预先确定(对我们而言)未知问题的解决方案。也许还有其他方法可以解决您的问题?
  • 这个结构中定义了很多结构和成员。以通用方式获取结构特定成员的值。 (不是使用 if..else 或 switch 直接将所需键映射到 p1.name)想要使用通用函数实现。
  • 访问名为name 的成员的“通用方式”是p1.name p1.name ....
  • 但是那些 p1 和 name 是由一些变量给出的......它们会因不同的情况而有所不同
  • 您需要向我们展示您的用例。这听起来绝对像是一个 XY 问题。

标签: c++ struct


【解决方案1】:

除非您为程序中的对象映射提供运行时std::string,否则无法执行此操作。 C++ 没有任何内置的运行时反射可以让您执行此操作。

另一种方法是使用 指针 来引用现有的变量和数据成员。例如

auto object = &p1;
auto member = &Person::name;

std::cout << object->*member << '\n'; // prints "alice"

live example on wandbox

【讨论】:

  • 能否请您提供如何在运行时实现的示例
  • @VSK 这都是运行时。如果你能解释为什么你认为你需要这样的东西,那真的很有帮助
猜你喜欢
  • 1970-01-01
  • 2022-12-17
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多