什么是 'R(*pf)(void*, Args..)',函数指向方法的指针?
What is `R(*pf)(void*, Args...)`, function pointer to a method?
我在这里看到了这种类型。我相信他正在尝试为成员指针类型擦除创建一个变量pf
(这就是为什么那里有void*
的原因(。然后我在类似的此类类中注意到了这种类型签名。
但是根据 isocpp 的非静态成员指针类型定义如下:int (Fred::*)(char,float)
(对于某些类Fred
( 函数指针类型定义如下:int (*)(char,float)
因此,可以创建一个成员指针变量,mp
如下所示:int (S::*mp)(int) = nullptr;
也许这个void*
表示this*
及其通过定义函数指针变量来定义成员指针变量的另一种方法?这可能吗?
什么是R(*pf)(void*, Args...)
?
它是函数指针的声明。仅此而已。
兼容函数取void*
和Args...
,并返回R
。
在给定的示例中,分配给指针的兼容函数是 lambda。void*
是一些可调用f
的类型擦除地址,而Args...
成员是将传递给该可调用对象的参数。通过捕获 lambda 中的类型别名来恢复可调用对象的类型(很好!
R(*pf)(void*, Args...)
是一个函数指针(常规指针,而不是指向成员的指针(,指向返回R
并具有(void*, Args...)
参数的函数,其中Args...
是类型列表(扩展的模板参数包(。
也许这个
void*
表示this*
及其定义成员指针变量的另一种方法
不,C++中没有这样的功能。
如果你看一下代码,分配给这个指针的唯一东西是lambda,就像这样:
pf = [](void* ptr, Args... args)->R{
return blah;
};
我不确定你为什么希望指向成员的指针参与其中。
相关文章:
- 将一个类的方法指针存储到另一个类中
- 如何调用返回类方法指针的类方法
- 通过reinterpret_casting方法指针从指针调用派生类的方法。这是 UB 吗?
- 泛型方法指针.reinterpret_cast指向不同类的方法指针,这是 UB 吗?
- C++;类方法指针;λ;将 lambda 作为成员函数指针传递;
- 使用模板、方法指针和字符串键入推导
- 将方法指针作为整数参数发送到C#的C 方法
- 从C 中的VTable获取方法指针
- 模板化方法指针 - 无法匹配函数参数的指针
- 获取特定的模板重载方法指针
- 如何将方法指针声明为Typedef方法参数
- 如何将方法指针类型转换为函数指针类型
- 如何在使用 pthreads 时将方法指针作为函数参数传递C++
- 方法指针映射,编译器说他们不接受任何参数
- C# 方法指针,如 C++ 中的指针
- c++创建新的LinkedList类:Clear()方法指针被释放未分配
- 尝试获取类方法指针时出现E_NOINTERFACE
- 传递和强制转换方法指针
- 常量方法指针的类型是什么
- 将对象的方法指针传递给接受 [静态方法指针/全局函数] 指针的函数