如题,
我想实现一个有默认执行函数的参数指针。类似下面这种
bool confirm(QString title,
QString content,
bool hasCheckBox = false,
QString checkBoxText = "",
void *callBack = **callBack**)
{
if(hasCheckBox) QCheckBox *chb = new QCheckBox(checkBoxText);
//...
if(hasCheckBox && confirmed){
callBack();
}
//...
}
请问 **callBack**
这里怎么实现?
自己找到答案了……
其实我当时是想实现一个有默认值的函数指针做参数,它其实应该是这么写:
这个
confirm
说白了就是制作一个自定义的QMessageBox::question对话框,如果hasCheckBox
,就在对话框中显示复选框,文字内容为checkBoxText
的值,当点击按钮角色为AcceptRole
的时候,就调用外部写好的一个函数,通过形参callBack
来调用。比如:执行后就是这样的:
→ 
我是想着这样写,一个函数就可以复用于更多场景,比如:
执行后就是这样的:

我上午的时候脑子瓦特了,首先是不应该用
void *
来表示参数为函数指针,实际的用函数指针的作为参数的写法应该还是类型 (*函数名)(参数列表)
;另外就是默认值不一定非得是函数体,也可以是空值。我当时死活就想不到这个点……所以一直纠结这里怎么写一个默认的函数体来作为默认函数执行= =|||
现在明白了,总结如上。
感谢上面两位热心朋友的帮助!