gpt4 book ai didi

c++ - 传递重载成员函数的函数指针?

转载 作者:太空狗 更新时间:2023-10-29 20:36:22 25 4
gpt4 key购买 nike

我想传递我的函数 repaint() 的函数指针,它在 3 个版本中被重载。我想不带任何参数地通过:

void repaint()

我试过:

myObject = new Object(&myclass::repaint);

但是编译器说“我不知道选择哪个版本”。好的。

然后我试了一下

myObject = new Object(static_cast<void(*)(void)>(&repaint);

然后我得到了(抱歉翻译不好):

  • “对绑定(bind)成员函数的表达式的无效操作”
  • “myObject::myObject 没有重载函数接受 3 个参数”

如何正确传递?

最佳答案

成员函数指针和非成员函数指针不是一回事。您代码中成员函数指针的类型不正确,将其更改为

myObject = new Object(static_cast<void(myclass::*)()>(&myclass::repaint);
~~~~~~~~~

顺便说一句:参数列表中的 void 是多余的。

关于c++ - 传递重载成员函数的函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38914468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com