Qt头文件引用其他类,主类头文件报错(1)invalid use of incomplete type 'class xx::yy' (2)forward declaration of 'class xx::yy'

其实这个错误很蠢,由于代码是从cpp文件直接copy过来的就没仔细看,但是他这个报错很有迷惑性,我们来看图:

 

 就这行代码,从cpp文件中复制过来的:

 

 本来目的呢就是提升这个变量的作用域,但是呢!!!在cpp文件里随手就new了头文件忘了这个事情!!!所以居然在头文件中new了,其实吧你直接在头文件中new也没什么,我特地做了一个无参构造函数来做测试:

 

仔细看,发现编译通过,运行也是正常的,那么问题出在哪呢?会不会就是那个构造函数的形参呢???

没错!!!!!!

就是构造函数里的ui在头文件中点不出来,为什么呢?

 

 

很简单啦就是没有被new啦(不过其实这个ui指针“new”的过程没这么简单,主要是因为这个ui呢他指向这个类他本身的一个实例,但是这个时候这个实例还没有分配空间,所以你点不出来很正常,,,)

最后友情提醒下,这边ui的部件是在ui的setup函数之后才会出现的,a = new a();这行代码的顺序记得注意

特此记录一下这个很蠢的bug,,,有时间我恶补一下cpp的代码加载顺序以及头文件执行顺序。。。嗨~cpp学习之路任重而道远啊!

 

posted @ 2022-12-07 14:41  苏州の酱醋茶  阅读(633)  评论(0编辑  收藏  举报