error C2512:“MainWidget”:没有合适的默认构造函数可用
开发环境:VS2010+Qt4.8 Addin。在VS中开发Qt程序。
VS新建Qt Gui程序总是会带有默认的ui文件,而这个在我开始自己写Qt程序的UI布局时基本就没用了。我需要建立自己的主窗体替代VS自动生成的主窗体类。
我的做法如下:
1、在“添加类”界面选择“Qt4Class”,进入新建Qt4Class向导界面;
2、输入“Class name”;
3、将“Base class”改为QWidget,如果需要的话;
4、选择“Constructor signature”为“QWidget * parent”;
5、在“main.cpp”文件中包含主窗体头文件“MainWidget.h”,并添加如下代码:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWidget w;
w.show();
return a.exec();
}
至此,基本程序框架已经完成,可以编译运行,但编译会出现如下错误:
“error C2512: “MainWidget”: 没有合适的默认构造函数可用”
原因在于:我们在main()函数中声明了一个MainWidget类的对象,并未给其传递参数,而我们在创建MainWidget类时选择了参数“QWidget * parent”。应该晓得,C++类会自动生成一个无参数的默认构造函数,但前提是没有其他构造函数。在这里我们已经有了一个带参数的构造函数,所以默认构造函数就不会自动生成,故此出现编译错误。
解决办法:
方法一、给MainWidget手动添加一个无参数的构造函数;
方法二、直接在类声明文件“MainWidget.h”中给自动生成的有参数构造函数一个默认参数0,“MainWidget(QWidget *parent = 0);”这样不仅解决了编译错误,而且不用另外添加一个无参数构造函数。这一点是C++的知识,可以参见《C++ Primer》
阅读(14252) | 评论(0) | 转发(0) |