赞
踩
最近用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"
-
- //具体函数定义
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。