最近用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"
//具体函数定义