c++ - 如何创建一个指向函数指针的指针?

标签 c++ function pointers struct

我正在尝试创建一个具有 2 个函数的结构,如果稍后需要,可以重写该函数。函数是:onClicked() 和 onClickedRight()。结构体代码:

typedef struct {
    QString text;
    QString infoText;
    QUrl iconSrc;
    QColor iconColor;
    void (*onClicked)() = nullptr;
    void (*(*onClickedRight))() = &onClicked; // by default, execute the same function from onClicked()
} ConfigButton;

我如何尝试执行这些功能:

ConfigButton b;
...
// test if click funtion has been defined, to execute it
if (b.onClicked)
    b.onClicked(); // this one work just fine

...

if (*(b.onClickedRight))
    (*(b.onClickedRight))(); // this one crashed

这可能吗?我错过了什么吗?

最佳答案

onClicked 是一个函数时,&onClickedonClicked 的计算结果是相同的——指向该函数的指针。

如果你想创建一个指向函数指针的指针,你首先需要一个指向函数的指针作为变量。

但是,考虑到您的用途,您只需要一个指向函数的指针。

typedef struct {
    QString text;
    QString infoText;
    QUrl iconSrc;
    QColor iconColor;
    void (*onClicked)() = nullptr;
    void (*onClickedRight)() = onClicked;
} ConfigButton;

if ( b.onClickedRight)
    b.onClickedRight();

关于c++ - 如何创建一个指向函数指针的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974029/

相关文章:

c++ - 使用大线程池调试多线程 C++ 应用程序

c++ - QListWidget::itemChanged 信号在 qt 中触发了两次

C语言、指针算术

c - 选择结构的数据成员

c++ - 固定大小数组指针数组的内存分配说明

c++ - float (int) const 的类型特征

c++ - 函数指针(类内)

c - "Pointer to Function"语法在 C 中如何工作?

javascript - 如何动态地将函数附加到对象

c++ - 用于空安全指针访问的 C/C++ 宏