私有成员函数,它采用指向同一类中私有成员的指针

2023-11-30

我怎样才能做到这一点? (以下代码不起作用,但我希望它能解释这个想法。)

class MyClass  
{  
    ....  
 private:
    int ToBeCalled(int a, char* b);

    typedef (MyClass::*FuncSig)(int a, char* b);

    int Caller(FuncSig *func, char* some_string);
}

我想以某种方式打电话给来电者,例如:

Caller(ToBeCalled, "stuff")

并有Caller call ToBeCalled无论它认为需要传递什么参数。如果可能的话,我想将所有内容都封装在类的私有部分中。实际上,我有大约 50 个函数,例如ToBeCalled,所以我找不到避免这种情况的方法。

感谢您的任何建议。 :)


你大部分时间都到了那里。您缺少 typedef 的返回类型,它应该是

typedef int (MyClass::*FuncSig)(int, char*);

现在,您只需要正确使用它:

int Caller(FuncSig func, int a, char* some_string)
{
    return (this->*func)(a, some_string);
}

你想简单地传递FuncSig实例,而不是FuncSig* -- a FuncSig*是一个指向成员函数的指针,具有额外的不必要的间接级别。然后,您可以使用箭头星号运算符(不是其正式名称)来调用它:

(object_to_be_called_on ->* func)(args);

对于非指针对象(例如堆栈上的对象或对象的引用),您可以使用点星运算符:

MyClass x;
(x .* func)(args);

另外,请注意运算符优先级 - 箭头星形和点星形运算符的优先级低于函数调用,因此您需要像我上面所做的那样放入额外的括号。

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

私有成员函数,它采用指向同一类中私有成员的指针 的相关文章

随机推荐

  • powershell中的哈希表

    我正在 PowerShell 中开发一个应用程序 我将变量存储在哈希表中 如何保持哈希表中的顺序 我希望顺序与我填充哈希表时的顺序相同 哈希表本质上不维护值的顺序 网上已经有一些解决方法 检查这些 http www tellingmachi
  • 在同一页面上显示 PHP 表单验证结果

    我确信第一反应会是这样的 这家伙没有谷歌吗 是的 我承认这确实看起来是一个非常基本的概念 我已经尝试过并试图理解它 查找有关该主题的各种帖子和文章等 但一切都无济于事 也许你可以给我指出正确的方向 我有一个基本的联系表单 contact h
  • Unity3D 中的随机数?

    我发现的是如何创建随机数 伟大的 然而 该解决方案在其他功能中不起作用 为了创建一个随机数 我使用了 Random randomDirection new Random int directionChoice randomDirection
  • 从 Excel 单元格捕获时间值

    我正在编写一个 Excel 应用程序 它将从 Excel 文件中读取和写入指定的值 并将它们显示给用户 但是 当我尝试从具有Number Format或键入的函数 hh min Hour Min 我无法准确地获得我想要的值 这是我的代码 w
  • MongoDB 中的反向数组字段

    我有一个集合 其中的位置字段以错误的顺序输入 location 38 7633698 121 2697997 当我尝试使用 在字段上放置二维索引时 db collection ensureIndex location 2d 我收到以下错误
  • 隐藏

    是的 我是一个 CSS 菜鸟 我正在尝试整理隐藏 div 的各种方法 例如 display none visibility hidden 还有更深奥的吗 忘记 JQuery JavaScript 事件 我只是想知道具有大量内容的 div 和
  • 如何将源文件夹添加到 Grails 应用程序

    我使用 STS 来开发 Grails 应用程序 并且需要使用 wsimport 实用程序生成的一堆类 为了不将我的源代码与自动生成的源代码混合在一起 我想添加单独的目录并将生成的类放在那里 如下所示 grails project class
  • 从 etree 中删除一个节点但留下子节点

    我正在遍历 XML 树 但从树中提取节点而留下其内部节点时遇到了一些麻烦 例如
  • Localized.strings 的字符编码,由 genstrings 生成

    在我的 ViewController swift 中 我有一个本地化字符串 TheOutLabel text NSLocalizedString hello comment The hello word 在终端中 为了生成 Localize
  • 如何在 AngularJS 应用程序中访问 Shibboleth SP 属性

    我是 SSO 和 Shibboleth 的新手 我已经在 Apache 服务器上成功实现了 Shibboleth SP 每当用户尝试访问受保护的资源时 都会根据 IDP 对用户进行身份验证 基本上 Shibboleth SSO 有以下 6
  • 分析内存转储以查找泄漏

    我们有一个 C NET 应用程序 其中存在内存泄漏 我使用 procdump 从生产机器上运行的应用程序实例获取内存转储 生产计算机运行 32 位 Windows XP 和 NET 4 0 exe配置设置为 net 4 0
  • C++ 测试框架:寻求推荐[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个可以在我的 Windows Visual Studio 机器上使用的 快速而肮脏 的 C 测试框架 这只是我在开发 所以它不一定是企业
  • 在本地使用 Git,然后合并并签入 StarTeam

    我的客户当前要求我们使用 StarTeam 来检查代码更改 我想从 StarTeam 中提取所有代码并设置一个本地 Git 存储库 以便我可以利用分支来对某些 JQuery 模块进行一些升级 有人对使用本地 Git 存储库然后检查 Star
  • Docker 无法启动已存在的服务

    Running docker compose up d我收到以下错误 Starting cr redis Starting cr rabbitmq Starting cr rabbitmq error Starting cr redis e
  • 将 HQL 与 MySQL 结合使用,如何在分组之前对结果集进行排序,以便选择正确的记录?

    有没有办法在单个查询中用 HQL 或可能使用 Hibernate Criteria 编写每组最大 n 查询 我正在努力解决与此类似的问题 Schema 书籍有 Publication date 书有作者 作者有出版商 我手头有一个出版商 以
  • 取消嵌套包含列表的数据框

    我有一个包含列表的数据框 如下所示 Load packages library dplyr Create data frame df lt structure list ID 1 3 A structure list c 9 8 c 7 6
  • R 中 Data.Table 中的一对多左连接/合并

    如果您在其他地方知道这个问题的答案 请告诉我 但我搜索并阅读了大量与 data table 相关的联接主题以及包的介绍和常见问题解答 但仍然没有找到答案 本质上 我正在寻找类似灵活的左 连接之类的东西 我本以为直接设置 A B 的键就可以解
  • 将 Firebase Admin SDK 添加到 Unity 项目

    我是 Unity 和 C 的新手 对 C 和所有 NET 东西来说真是菜鸟 我想在我的 Unity 项目中使用 Firebase 实时数据库 我按照以下说明进行操作Firebase 文档进行设置 但在我创建了一个新的 p12 文件并添加后这
  • 使用 Pandas 将列转换为行

    所以我的数据集包含 n 个日期的一些位置信息 问题是每个日期实际上是不同的列标题 例如 CSV 看起来像 location name Jan 2010 Feb 2010 March 2010 A test 12 20 30 B foo 18
  • 私有成员函数,它采用指向同一类中私有成员的指针

    我怎样才能做到这一点 以下代码不起作用 但我希望它能解释这个想法 class MyClass private int ToBeCalled int a char b typedef MyClass FuncSig int a char b