glutTimerFunc 问题

2023-11-29

我正在使用计时器函数来制作动画,但是当我将其放置在 Renderer 类中时遇到问题。

void Renderer::animate(int value)
{
 glutTimerFunc(TIMERMSECS, animate, 0);
}

错误: \renderer.cpp(242) : 错误 C3867: 'Renderer::animate': 函数调用缺少参数列表;使用 '&Renderer::animate' 创建指向成员的指针


问题是Renderer::animate是一个类成员函数,因此有一个隐藏的this范围。glutTimerFunc不知道有什么价值this通过,所以如果你以某种方式试图通过令人讨厌的强制转换来绕过编译器,它会在运行时崩溃。

解决办法就是改变Renderer::animate转换为静态方法或普通的全局函数。然后您需要将指针存储到您的Renderer全局变量中的实例,例如:

class Renderer
{
    static void staticAnimate(int value);
    void animate(int value);
    ...
};
Renderer *gRenderer = ...;

void Renderer::staticAnimate(int value)
{
    gRenderer->animate(value);
}

...

glutTimerFunc(TIMERMSECS, &Renderer::staticAnimate, 0);

If sizeof(void*) <= sizeof(int)(在 32 位系统上是这样,但在 64 位系统上不是这样),那么您还可以通过value范围;但是,由于这不可移植,您不需要调用glutTimerFunc同时在多个不同的实例上,您不必担心为此使用全局变量。

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

glutTimerFunc 问题 的相关文章

随机推荐

  • 将表达式作为参数传递:关键字不能是表达式

    这是我的行动 gt gt gt def show d print d gt gt gt test result True gt gt gt show test result True gt gt gt show test info Some
  • 使用 SDL 2 和 -static 进行编译时收到对各种 Windows 库的未定义引用?

    我正在对 SDL2 中的 Wolfenstein 3D 引擎进行修改 使用 Wolf4SDL 作为基础 并且遇到了一个问题 在链接器选项中使用 static 时 我得到了对各种事物的大量未定义引用 这是我的构建日志来说明我的意思 Build
  • 将数据集动态绑定到 RDLC 报告

    我想将动态数据集绑定到 rdlc 如果我在 ASPX 文件中使用内联数据源 静态绑定 我可以查看报告 但是 如果我使用以下代码 报告查看器将继续显示 正在加载 图像 我已经检查了数据集名称 如果我将数据集名称更改为 Orders2 它会显示
  • 如何修复 AttributeError: 'NoneType' 对象没有属性 'text'...循环时

    我是初学者 这个论坛上的答案非常宝贵 我正在使用 Python 3 和 Beautiful Soup 通过循环页码从同一网站上的多个网页中抓取 非表 数据 它有效 但我不断收到 AttributeError NoneType object
  • 触摸设备(iOS、Android)

    触摸输入上有刻度吗 我知道有灵敏度设置可以说明是否触摸 但它也有硬压力和低压的刻度吗 如果有 规模是多少 0 到 1 或 0 255 或者什么可能性 嗯 这完全取决于 API 以 Android 为例 有一个getPressure Moti
  • 如何在android中播放来自url的动画GIF图像?

    我正在将 giphy 集成到我的 Android 应用程序中 我怎样才能玩animated gifAndroid 中的 URL 中的图像 我应该使用ImageView WebView VideoViewETC 例如 如果我想播放动画this
  • 无法在 JavaScript 警报框中添加新行?

    我在 PHP 中生成一个字符串 然后最终将该字符串传递到 JavaScript 警报框中 我的问题是我实际上无法在警报框中添加换行符 我的代码如下所示 str This is a string n alert str This is the
  • CPython 和 PyPy 小数运算性能

    我想使用数百万个数据点 以小数表示 运行 100k 次模拟 我选择小数而不是浮点数是为了浮点精度和易于对我的逻辑进行单元测试 因为0 1 0 1 0 1对于浮点数不等于 0 3 我希望通过使用 PyPy 来加快模拟速度 但在我的测试过程中我
  • Python 中的类与类型

    我最近刚刚开始自学如何编码 我目前正在阅读想想Python 2对于 python 3 以及当它教授有关type 函数 它给出了例子type 2 哪个输出
  • Powershell 2.0 sudo 限制

    长期读者 但新海报 我已经为这个问题苦苦挣扎了一整天 这让我发疯 在搜索了这个网站和谷歌之后 我仍然陷入困境 基本上 我不知道如何在 Powershell 中实现与 Copy Item CmdLet 一起使用的 sudo 这是我的代码 简介
  • 如何在 WebSockets hybi 08+ 中构建(解构)数据帧?

    自从 Chrome 更新到 v14 以来 它们从草案第三版 to 草案第八版 我有一个在 WebSocket 上运行的内部聊天应用程序 虽然我已经让新的握手工作正常 但数据框架显然也发生了变化 我的 WebSocket 服务器基于Nugge
  • 客户端 Javascript 中的 Base64 编码和解码 [重复]

    这个问题在这里已经有答案了 JavaScript 中是否有任何方法可用于使用 Base64 编码对字符串进行编码和解码 某些浏览器 例如 Firefox Chrome Safari Opera 和 IE10 可以原生处理 Base64 看看
  • C++ 继承类中函数重载的问题

    这可能是一个菜鸟问题 对此感到抱歉 最近 当我尝试处理 C 中的一些高级内容 函数重载和继承时 我遇到了一个奇怪的问题 我将展示一个简单的例子 只是为了演示这个问题 有两个班级 classA and classB 如下 class clas
  • Scala 中的斑马拼图

    我正在尝试使用 Scala 完成 Udacity 的 CS212 但在使用 Zebra Puzzle 时遇到了问题 Python 中的一些概念并不容易转换为 Scala 尤其是对于像我这样的初学者 这些是我迄今为止管理的代码 val hou
  • 告诉 LESS 在某些特殊情况下不要惊慌并忽略奇怪的字符

    我们的服务器有一个用于 CSS 文件的自定义语言切换器 它识别某些模式和开关left right命令 除其他外 为了告诉它切换到哪里 我们使用 RIGHT and LEFT 任何需要的地方 div somecls margin RIGHT
  • 地图视图始终以我的位置为中心显示地图

    当用户按下按钮时 我使用以下代码来获取我的位置 mapview setShowsUserLocation YES 然后执行以下操作将地图置于用户位置的中心 void mapView MKMapView mapView didUpdateUs
  • 从文件部分填充数组

    我需要用文件中的数据部分填充 2 个数组并保持它们并行 但我当前的代码给了我看起来像乱码的错误 如果有人甚至可以帮助我解码错误 我将非常感激 Code Author Sam LaManna Course CSC 135 Lisa Frye
  • java.lang.NoSuchMethodException: [类 android.view.View] FirebaseRecyclerAdapter

    我正在尝试使用 FirebaseRecyclerAdapter 制作示例应用程序 但不断收到错误java lang RuntimeException java lang NoSuchMethodException
  • C# - WCF - 进程间通信

    用于进程间通信的最佳 WCF 绑定是什么 我已经在本地网络上使用了 WCF 它非常棒 我也想将它用于进程间通信 然而 我不想暴露网络上的通信 Use the 网络命名管道绑定用于同一台机器上的进程间通信 使用NetTcp绑定如果您跨越机器边
  • glutTimerFunc 问题

    我正在使用计时器函数来制作动画 但是当我将其放置在 Renderer 类中时遇到问题 void Renderer animate int value glutTimerFunc TIMERMSECS animate 0 错误 rendere