C++ 中具有多态性的静态方法

2024-02-05

我在使用多态性时遇到了一个奇怪的问题。 我有一个实现静态方法的基类。由于各种原因,该方法必须是静态的。基类还有一个纯虚方法run()由所有扩展类实现。我需要能够打电话run()来自静态类。

当然,问题是静态类没有 this 指针。该方法可以传入一个 void * 参数。我一直在尝试想出一种巧妙的方法将 run 方法传递给它,但到目前为止没有任何效果。也尝试过将其传递给它。这样做的问题是我必须实例化它,这需要扩展类的知识。这违背了多态性的全部目的。

关于如何解决这个问题有什么想法吗?


不要将其作为 void* 指针传递,而应将其作为指向基类的指针(或引用)传递:

class BaseClass
{
public:
  static void something(BaseClass* self) { self->foo(); }
  virtual void foo() = 0;  
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中具有多态性的静态方法 的相关文章

随机推荐

  • SMTP 错误:无法连接到 SMTP 主机

    我有这段代码 并且在我的本地服务器上一切正常 电子邮件已发送 没有任何问题 但现在我将内容传递给网络服务器 我收到此错误 SMTP Error Could not connect to SMTP host SSL is enable in
  • 复式记账分页问题

    带有分页的复式记账会计系统存在一个非常严重的问题 我认为这很常见 但我仍然没有找到解决我的问题的任何解决方案 您可以使用此链接阅读有关简单的复式记账会计系统 https medium com RobertKhou double entry
  • 创建虚拟监视器(显示设备)

    我提出了一个问题here https stackoverflow com questions 11919175 java robot screenshot beyond visible但意识到我走错了方向 我需要创建一个虚拟监视器 实际上只
  • 如何以最便携的方式通过Graphene访问PrimeFaces组件?

    我正在使用 Primefaces 6 1 组件为 Java EE Web 客户端编写 Arquillian Graphene 功能测试 并希望从一开始就以最便携的方式编写它们 我注意到不可能执行类似的操作WebElement click在任
  • watchOS 2 与 CocoaPods 配合使用

    有人让 CocoaPods 与 watchOS 2 一起使用吗 我尝试将 use framework 与 platform watchos 2 0 一起使用 但它说 无效Podfile文件 不支持的平台watchos2 平台必须是 ios
  • 是否可以从谷歌电子表格填充谷歌表单?

    我想创建一个使用电子表格中的数据的表单 以便它是动态的 是否有可能做到这一点 我无法找到任何描述如何操作或任何示例的地方 似乎所有可能的方法都是从表单填充电子表格 我也会使用该表单 但这不是这里的主要问题 是的 使用表单脚本并使用 FORM
  • 如何升级django?

    我的项目在 Django 1 5 4 上运行 我想升级它 我做到了pip install U I django现在pip freeze显示 Django 1 6 5 显然 django 已升级 我在virtualenv 但我的项目仍在使用
  • bootstrap-selectpicker 不改变框宽度

    我正在尝试更改显示所选选项的选择器框的宽度 但无论我尝试什么 我都无法更改它 也无法更改框的颜色 任何想法或建议表示赞赏 我假设应该更改框宽度的代码片段如下 如您所见 我将其一直设置为 25 但宽度仍然很宽 selectpicker wid
  • 如果窗口未激活则获取输入 (Windows)

    简洁版本 当窗口未激活时 如何在使用 C C 的 Windows 中接收输入消息 背景资料 我目前正在开发一个不应该依赖于任何窗口的输入系统 因此它可以例如也可以在控制台中使用 我的想法是创建一个仅接收消息的不可见窗口 这可以使用 HWND
  • 在 Go 1.18 中 strings.Title() 已被弃用。现在该用什么?如何?

    按照建议here https www thesaurus com e grammar when to capitalize words 人名应该大写 例如John William Smith 我正在用 Golang 编写一个小软件 它从用户
  • 在另一个文件中查找一个文件的内容

    我使用以下 shell 脚本将一个文件的内容查找到另一个文件中 bin ksh file home nimish contents txt while read r line do grep line home nimish another
  • 从领域模型通信回应用层

    我有一个带有价格列表的域模型产品 public class Product private List
  • 派生类型的自动静态调用

    有谁知道如何使派生类自动实例化具有模板类型的静态变量 这要么不需要派生类的编写者提供任何内容 要么强制他调用此静态方法以使派生类定义有效的 这可能是无法理解的 我会尝试更好地定义它 基本上我有一个全局工厂类 带有一个名为 registerT
  • 在 JQuery 中输入时将 INPUT 附加到 TEXTAREA

    我有一个输入文本框 当有人在 INPUT 文本框中键入内容时 我需要它附加 添加到 TEXTAREA 值 假设用户在文本框中输入 12345 文本区域 默认值 评论 将自动添加 评论 12345 在他们键入时添加 12345 假设area是
  • animate.css 在 Chrome 最新版本(73 以上版本)中不起作用

    https daneden github io animate css https daneden github io animate css 这是 animate css 的链接 它在我的浏览器 Chrome Firefox 等 上没有显
  • 使用 gettext 的动态消息 (AngularJS)

    我有一个带有 Django 后端和 AngularJS 前端的应用程序 我用角度 gettext 插件 https github com rubenv angular gettext 与 Grunt 一起处理翻译 问题是 我有时通过 API
  • MySQL - 除了一个条目之外按字母顺序排序?

    我必须使用 MySQL 对类别列表进行排序 因为我使用的 CMS 只允许这样做 有没有一种方法可以按字母顺序排序 但在列表末尾返回一个条目 其他 ORDER BY ColumnName Other ColumnName
  • 我可以在 SQL Server Management Studio 中对 nvarchar 列类型使用“/”运算符吗? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我试图划分两列 其定义为nvarchar 但是 SSMS 会抛出错误 表示您无法使用 操作员开启nvarchar select locati
  • JavaScript 动画

    我正在尝试制作动画div moving 200px在 JavaScript 中水平排列 下面的代码让它跳跃像素 但是有没有办法让它看起来动画而不使用 jQuery function var div document getElementBy
  • C++ 中具有多态性的静态方法

    我在使用多态性时遇到了一个奇怪的问题 我有一个实现静态方法的基类 由于各种原因 该方法必须是静态的 基类还有一个纯虚方法run 由所有扩展类实现 我需要能够打电话run 来自静态类 当然 问题是静态类没有 this 指针 该方法可以传入一个