我正在尝试创建一个具有 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
是一个函数时,&onClicked
和 onClicked
的计算结果是相同的——指向该函数的指针。
如果你想创建一个指向函数指针的指针,你首先需要一个指向函数的指针作为变量。
但是,考虑到您的用途,您只需要一个指向函数的指针。
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/