【发布时间】:2023-03-12 23:25:01
【问题描述】:
我正在尝试创建一个具有 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
有可能吗?我错过了什么吗?
【问题讨论】:
-
b中的值是否从其他地方复制而来?如果是这样,那么onClickedRight可以指向该源结构。 -
C 还是 C++?请决定。
-
顺便说一句,在 C++ 中,你不需要
typedef struct中的typedef。 -
假设 C++ 这应该可以工作。请将您的问题简化为 minimal reproducible example,其他人可以运行它会重现该问题。
-
void (*onClicked)() = nullptr;在 c 中 typedef 语法错误
标签: c++ function pointers struct