QT does not name a type问题

最近用qt练习写一个主窗口点击按钮隐藏主窗口,显示次窗口,此窗口点击按钮隐藏次窗口,显示主窗口的小程序。

思路有两个:

1、使用信号和槽函数,这个没有太大的问题

2、让这两个类互相包含彼此的指针,然后在次窗口类中写一个设置本类中主窗口成员对象的方法,然后传递主窗口对象即可,相当于只写两个槽函数就ok了,但在编译的时候一直提示:does not name a type。

后来查资料是两个类相互引用这出现的问题,如果所用的是具体对象而不是指针的话,无解,因为:

两个类相互引用,不管哪个类在前面,都会出现有一个类未定义的情况。而类的声明就是提前告诉编译器,所要引用的是个类,但此时后面的那个类还没有定义,因此无法给对象分配确定的内存空间,因此只能使用类指针。

所以只能使用对象指针,而这样还出问题,需要前置声明来解决,具体方案如下:

假设两个类分别为:A.h   A.cpp   B.h   B.cpp

A.h中这样写:

#include B.h

class A{
public:

private:
    B *b;
}

A.cpp中这样写:

#include "A.h"

//具体函数定义

B.h中这样写:

class A;
class B{
public:
    //函数声明
private:
    A *a;
}

B.cpp中这样写:

#include "A.h"
#include "B.h"

//具体函数定义

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值