如何从其他类调用功能指针
How to Call function pointer from other class
,假设我有一些简单的函数指针的简单类,例如:
class ClassWithFuncPointer
{
public:
inline void firstFunction() { /* do something */ };
inline void secondFunction() { /* do something */ };
// MY FUNCTION POINTER
void (ClassWithFuncPointer::*funcPointer) ();
// AND I CAN DEFINE IT BY DEFAULT IN CONSTRUCTOR LIKE THAT:
ClassWithFuncPointer()
{
funcPointer = &ClassWithFuncPointer::firstFunction;
}
// AND NOW I CAN USE MY FUNCTION POINTER INSIDE OF ClassWithFuncPointer, LIKE THAT:
void useFunctionPointer()
{
(this->*funcPointer )();
}
}
所以在这里(this->*funcPointer )();
做这项工作。
,但我无法弄清楚如何使用其他班级的funcPointer
,我的意思是这样:
class otherClass
{
otherClass(){};
ClassWithFuncPointer instanceOfClassWithFuncPointer;
}
现在如何在instanceOfClassWithFuncPointer
成员的otherClass
内使用funcPointer
。根本可能吗?
我尝试了许多变体:
(this->*instanceOfClassWithFuncPointer.funcPointer)();
或
(instanceOfClassWithFuncPointer.*funcPointer)();
或
( (&instanceOfClassWithFuncPointer)->*funcPointer )();
或只是
instanceOfClassWithFuncPointer.funcPointer();
,但始终会出现错误。我无法弄清楚。
如下(C 11或较新)呢?
auto fp = instanceOfClassWithFuncPointer.funcPointer;
(instanceOfClassWithFuncPointer.*fp)();
或也(C 98兼容,也许使用较短的变量名称)?
(instanceOfClassWithFuncPointer.*instanceOfClassWithFuncPointer.funcPointer)();
以下是一个完整的工作示例
#include <iostream>
struct ClassWithFuncPointer
{
public:
inline void firstFunction ()
{ std::cout << "cwfp::firstFunction()" << std::endl; }
inline void secondFunction ()
{ std::cout << "cwfp::secondFunction()" << std::endl; }
void (ClassWithFuncPointer::*funcPointer) ();
ClassWithFuncPointer()
{ funcPointer = &ClassWithFuncPointer::firstFunction; }
void useFunctionPointer()
{ (this->*funcPointer )(); }
};
class otherClass
{
public:
otherClass ()
{ }
ClassWithFuncPointer instanceOfClassWithFuncPointer;
void foo ()
{
auto fp = instanceOfClassWithFuncPointer.funcPointer;
(instanceOfClassWithFuncPointer.*fp)();
}
};
int main ()
{
otherClass oc;
oc.foo();
}
相关文章:
- "No-Const Pointer to Const "调用功能
- 在地图中存储的类中调用功能
- 如何部分专业化功能以用元组元素作为参数调用功能
- 调用功能并将其设置为等于结构
- 在迭代器上调用功能
- 来自Pascal DLL/SO中的C 加载和调用功能
- 在C 中的另一个类中调用功能
- 如何从另一类调用功能
- C 迭代用于循环并在其中调用功能
- 从矢量数组中调用功能
- C 在运行的JVM中调用功能
- 使用条件模板C 调用功能
- 以特定顺序调用功能
- 在没有资格的命名空间中调用功能
- 如果在同一翻译单元中调用功能,为什么需要搬迁
- Portaudio:通过调用功能播放多个生成的声音
- 如何从其他类调用功能指针
- 如何使用从Swift代码中调用的线程在C 上制作异步调用功能
- 从Python(Anaconda)调用C 功能
- 在ShellCode中调用功能