将字符串/字符转换为C++中的类成员/方法

2023-12-20

有没有办法将字符串或字符转换为类成员/成员函数以动态访问它们?

对于前。这个特定的代码,

 #include <iostream>
 #include <map>

 using namespace std;

 class agnt {
 public:
 int x, y;
 agnt(int a=0, int b=0) : x(a), y(b) {}
 };


 int main() {
      map<int,agnt> agntID;
      agnt temp;
      temp.x=1;
      temp.y=5;

      agntID[1]=temp;

      for(char tmp='x'; tmp<'z'; tmp++) {
         cout<<agntID[1].tmp<<'\n';     //Here I get the following error: tmp is
         }                              //not a member of class agnt
 }

有没有办法转换字符“tmp”,使其被识别为类成员?任何提示或解决方案将不胜感激。


C++没有任何内省 http://en.wikipedia.org/wiki/Type_introspection所以不,这是不可能的。

但是,您可以通过使用另一个来“破解”它std::map包含名称作为键,值是对变量的引用:

agnt temp;

std::unordered_map<char, int&> variable_map = {
    { 'x', temp.x },
    { 'y', temp.y }
};

variable_map['x'] = 123;
std::cout << variable_map['y'] << '\n';

但这通常不值得,因为它需要更多的工作。特别是如果您想对多个变量执行此操作(因为每个结构变量都需要自己的映射)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串/字符转换为C++中的类成员/方法 的相关文章

随机推荐

  • 通过preferences.xml中的Intent打开应用程序设置

    我想通过单击首选项条目来打开应用程序设置 所以我在preferences xml中添加了一个意图
  • 替换 Objective-C Foundation 函数实现

    有没有办法替换 Objective C Foundation 函数的实现 例如 NSClassFromString 函数 我当然知道类替换方法 https developer apple com library ios DOCUMENTAT
  • 如何使用 dplyr 将多列转变为新的多列

    我正在尝试将 3 列更改为更大表 包含更多列 中的 3 个新列 其中 3 个新列依赖于前 3 个现有列 第四个新列仅依赖于第四个现有列 基本上 我想在 3D 空间中旋转点的坐标 在 x y z 列中 并存储在新列 x rot y rot z
  • 安装 Python3 的 PySide

    当我尝试为 Python 3 6 安装 PySide 时 它 说它只兼容 Python 3 4 是否有任何解决方法可以为 Python 3 6 安装它 似乎仅支持以下 Python 版本 2 6 2 7 3 2 3 3 3 4 要获取最新的
  • HBase - java 中的 java.lang.NoClassDefFoundError

    我只是想使用 Java 与 Hbase 交互 import org apache hadoop conf Configuration import org apache hadoop hbase import org apache hado
  • 动态添加到 Highcharts

    我有一个 json 对象 我正在尝试将其添加到我的 highcharts 选项中 我可以通过 API 接收该对象 并将其传递给我的 highcharts 函数 但我无法将我的数据添加到它周围的静态数据中 var datas datas ge
  • 使用声明性数据绑定 ASP.NET 进行评估

    我一直在尝试使用声明性数据绑定 ASP NET 并与幕后发生的 魔法 作斗争 我如何让它在 ASP Net 2 0 中工作 这是在数据范围内FormView控制
  • 从提交历史记录中获取 GitHub 用户名

    我将一个存储库克隆到我的机器上 然后做了 git log 但在日志中 它显示了该人的全名和电子邮件 而不是他们的 github 用户名 有没有一种方法可以在不依赖 GitHub 网站的情况下将提交与用户关联 如果你想使用 git log 似
  • Google Sheets 功能可对行进行分组和连接

    样本表 https docs google com spreadsheets d 1AeP0sxDi0 3aaesUdCNTKfricIimjTMFaKO FX9 g50 edit usp sharing https docs google
  • 如何使用 htaccess 从 url 中删除 GET 参数?

    我的网站除了一页之外不使用任何 GET 参数 尽管如此 我可以看到 Google 成功地使用 GET 参数索引了我的一堆页面 这对于 SEO 重复内容 来说不太好 因此 我尝试编辑 htaccess 以在所有带 GET 参数的 url 到不
  • 订阅我自己的 C# 事件会造成内存泄漏吗?

    如果基类发布 C 事件并且派生类订阅该事件 即订阅其自身 事件订阅会阻止对象被垃圾收集吗 或者垃圾收集器是否足够聪明来检测这种循环引用情况 乍一看 似乎应该如此 但我很确定我已经看到了执行此操作的控制代码 这是一个如此基本的问题 我不敢相信
  • 在 jquery 中获取数据绑定值

    我正在使用 knockout js 设置跨度值 HTML 代码 span span 这工作正常并在用户界面上显示用户名 我正在尝试从 js 文件中获取该值 使用下面的代码 alert this attr data bind 这是这样的服务结
  • 调整 UITextField 或 UITextView 出现键盘时的界面

    我有一个表格 每个单元格都包含一个标签和一个文本字段 问题是 当我去编辑最后一行时 键盘隐藏了表格的下部 我看不到正在输入的内容 如何将界面移动到键盘上方以便看到正在输入的内容 谢谢 穆斯塔法 你需要注册你的 viewControllerU
  • Android + 致命异常:Timer-0(使用计时器删除 ImageView)

    在我的 Android 应用程序中 我使用计时器来使用 TIMER 显示相应的 ImageView 我收到一个错误 02 27 06 39 33 999 E AndroidRuntime 1325 FATAL EXCEPTION Timer
  • UISegmentedControl 选择的索引始终为 0?

    我有一个 UISegmentedControl 它有 6 个段 是我在 Interface Builder 中创建的 我在值更改时调用以下方法 IBAction segmentedChartButtonChanged id sender s
  • appView.addJavascriptInterface() 不适用于 API 17

    我可以使用我的phonegap java脚本函数和android 2 2中的java函数 但相同的代码不在 API 17 上运行 我应该做什么才能从 API 17 中的 java 脚本调用本机 java 代码 我在我的java文件中使用这个
  • JAXB 解组中 XML 中的命名空间存在问题

    我有一个 XML 需要使用 JAXB 进行解组 如果我从元素中删除所有命名空间属性 则代码可以正常工作 但如果保留命名空间属性 则在解组后会得到一个空对象 XML 是这样的
  • 不允许使用 POST 动词

    有点基本 但我尝试了一些方法来解决以下错误 但无法得到正确的解决方案
  • 如何在 javascript 中使用 clojurescript 的复杂返回对象

    我想编写一个 clojurescript 函数 它返回一个复杂的项目 例如 foo bar 或 list foo bar 并且我希望能够从 javascript 调用此函数并获取返回值 如何做呢 就我而言 我要返回的向量 列表 集合中的项目
  • 将字符串/字符转换为C++中的类成员/方法

    有没有办法将字符串或字符转换为类成员 成员函数以动态访问它们 对于前 这个特定的代码 include