如何将方法指针声明为Typedef方法参数
How to declare a method pointer as a typedef method parameter
我正在尝试声明一个方法typedef,其中包括方法类型本身的指针参数 - 这可能吗?
一种方法看起来像:
void myFunc(FuncType* pFunc, int a) {}
其中 myFunc
是与 FuncType
匹配的声明,因此我可以设置一个变量并这样称呼为:
FuncType f = myFunc;
f(&f, 5);
我试图将匹配此方法匹配的Typedef声明为:
typedef void (*FuncType)(FuncType*, int);
但这是行不通的,因为在完全声明它之前需要FuncType
。我可以通过将参数设置为void指针来解决此问题,但是有某种方法可以解决此问题。也许通过某种形式的 FuncType
的正向声明?
这是不可能的;一个函数不能使用自己类型的参数(或返回这样的东西)。
所有合理强大的类型系统都是这种情况。
唯一的解决方法是像使用void*
一样通过另一种类型引入间接。
这类似于类别如何包含自身作为成员的实例,您通过通过指针或参考来间接工作。
您不仅可以声明这种 typedef
,而且您也无法声明这种函数。它导致无限递归。
以下是这样的函数声明的样子:
void myFunc(void (*pFunc)(...), int a);
...
将扩展到:
void (*pFunc)(...), int)
...
将扩展到:
void (*pFunc)(...), int)
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++:TypeDef使用元组
- 通过方法访问结构
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- C++重构,扩展方法typedef
- 如何对绑定的成员方法进行typedef,然后将该类型用作模板参数
- 显式调用 typedef'd 类类型的析构函数的正式正确方法
- 有没有一种方法可以使用typedef中的参数名称
- 在makefile中规避重复的库头和typedef的方法
- 将typedef方法作为指针函数传递
- 如何将方法指针声明为Typedef方法参数
- 在 Java 中创建"typedef"的可能方法
- C++ - 有没有办法将字段\方法添加到使用"typedef"定义的类型?
- 模板类的方法使用全局范围内的 typedef.编译器错误
- 重载以 typedef 别名作为参数的成员方法
- C++为成员函数提供typedef模板的一种方法
- 我能用类非静态成员方法的typedef做什么
- typedef的替代品或将typedef与if-else一起使用的正确方法
- 容器优化:为什么STL容器方法参数不再使用allocator::const_reference typedef
- return value-C++:由私有方法返回的本地typedef