今天犯了一个错误:
HMenu(QWidget* _parent=0);
HMenu(QString _txt = " ", QWidget* _parent=0);
提示说:错误 1 error C2668: “HMenu::HMenu”: 对重载函数的调用不明确 f:\workspace\myclasslibraries\hgui\hgui\src\HMenu.h
在网上搜都是说由于int 或 float 等的隐式转换导致的,那么我就用在这个两个构造函数前加个explicit 呗,还是不行。
最后终于知道问题了,
HMenu(QWidget* _parent=0); 跟HMenu(),对于编译器来说是一个样的,所以编译器不知调用哪个函数,
而HMenu(QWidget* _parent=0); 与 HMenu(QString _txt = “ ”, QWidget* _parent=0); 也是同样道理,
所以在QString _txt = " ",把默认参数(=" ")去掉了,就OK了。
当这两个构造函数在APP上还没有报错,但我想封装成一些控件到DLL里,就出现这个问题了,估计是C语言最后翻译函数的问题什么的吧—— ——