问题标签 [member-function-pointers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - c++成员函数指针问题
我是 c++ 新手。我想了解对象指针和指向成员函数的指针。我写了如下代码:
代码 :
但是当我编译它时,它向我显示了以下两个错误:
我的问题如下:
- 我在这段代码中做错了什么?
- 如何制作对象指针?
- 如何使指向类的成员函数的指针以及如何使用它们?
请解释我这些概念。
c++ - 当它是类数据成员时如何调用指向成员函数的指针?
在上面的测试代码中,pf
是B
. 调用它的语法规则是什么?它应该是直截了当的,但我没有得到一个合适的匹配。例如,如果我尝试obj.*pf(0,0);
,那么我会得到:
c++ - 如何将成员函数指针传递给模板函数中的重载方法?
我提到了这个有点相似的问题。但是这里的情况不同:
在上面的测试代码中,我有一个重载的foo
inside A
。如果只有 1foo
则代码可以正常工作。但是对于重载的情况,编译器会抱怨:
错误:没有匹配的函数调用 `ReceiveFuncPtr(A&, [未解决的重载函数类型])'
除了在调用时进行显式类型转换ReceiveFuncPtr()
,我们有什么方法可以对其template
参数进行一些更改并使其foo(int)
始终能够接收任何类似的版本class A
?
编辑:想法是在调用函数时不要担心类型。它应该很简单,ReceiveFuncPtr(obj, &A::foo);
让其template
发挥作用。
c++ - 具有包含另一个类的函数指针的映射的类
我想做的是有一个包含第二个类的函数指针映射的类,但是第二个类的名称应该无关紧要(不能硬编码到第一个类中)我真的希望能够实现这不使用宏。我遵循了 learncpp.com 关于函数指针的示例,但是当在类之间传递它们时,我真的迷路了!我的尝试如下:
c++ - 将成员函数指针转换为 TIMERPROC
如何将成员函数指针转换TIMERPROC
为与 WINAPI 一起使用的类型SetTimer
?下面的代码片段显示了我现在是如何做的,但是当我编译时出现此错误:
错误 C2664:“SetTimer”:无法将参数 4 从“void (__stdcall CBuildAndSend::*)(HWND,UINT,UINT_PTR,DWORD)”转换为“TIMERPROC”
回调需要绑定到它的原始类实例。如果有更好的方法来做到这一点,我会全力以赴。谢谢。
c++ - 为什么编译器不能在我的代码中推断出模板参数?
我正在使用视觉工作室,我已经尝试了所有我能想到的东西。但不知道为什么这段代码会产生错误,这是我的代码:
它会产生这个错误:
我想知道当参数 x 在函数内部初始化时它不会产生该错误,如下所示:
c++ - 使用 &MyClass::MyFunction 时出现未定义的引用链接错误
这让我很难过,所以我想我会在这里查询:
我有一堂课如下:
那是在标题中。在构造函数中
正如我所看到的那样。没有编译时错误。但是,当我链接如下:
我得到:
这没有任何意义。让我感到特别奇怪的是,这是一个链接器错误。我包括了我的两个目标文件。
谁能告诉我发生了什么事?如果它可能相关,我在 Windows 上的 MinGW 上。
编辑:
史诗般的失败。在我的 cpp 文件中定义函数时,我忘记了 MyClass:: 前缀。我只是没有决定检查。几乎和在类定义后忘记分号一样糟糕。
c++ - c ++:可以使用 boost::bind 将成员函数转换为预期的函数指针签名吗?
我正在使用将函数指针传递给方法调用的第 3 方库。
正常用法如下:
现在我想让 continueAfterOPTIONS 方法成为一个类的成员函数。通常我使用 boost::bind 来做到这一点:
导致
我尝试为函数的参数添加占位符,但这没有任何区别。我正在尝试做的事情可能吗?有没有办法投射绑定结果?
谢谢!
c++ - C++ 指向虚函数的指针
如果你有这样的结构
和像这样的参考
您可以像这样获得指向其func
方法的指针:
现在,如果该方法是虚拟的并且您在运行时不知道它是什么,该怎么办?为什么你不能得到这样的指针?
是否可以获得指向该方法的指针?
c++ - create_pthread() 调用的强制转换成员函数
我想停止警告
server.cpp:823:警告:从 'void* (ClientHandler:: )()' 转换为 'void ( )(void )'
在通话中:
其中handle()
是 的成员函数ClientHandler
:
我很难从编译器破译函数类型的消息。
问题是:
- 我应该改变
handle()
界面吗?我可以摆脱整体铸造吗? - 我应该换演员吗?究竟是什么?
- 完全不同的东西?