天天看點

QT兩個頭檔案互相包含出現找不到類的錯誤

今天突然發現了一個很緻命的錯誤,兩個頭檔案,一個a.h,一個b.h,然後代碼是這樣的:

//a.h
#include "b.h"

class AClass 
{
    AClass();

private:
    BClass b;
}      
//b.h

#include "a.h"

class BClass
{
    BClass();

private:
    AClass a;
}      

報錯了,找不到BClass,因為互相包含是包含嵌套循環導緻錯誤。

解決辦法如下:

//a.h

#include <QApplication>

class BClass;

class AClass
{
    AClass();

private:
    BClass a;
}      

然後在a.cpp裡面添加:

//a.cpp
#include "b.h"      
//b.h

#include <QApplication>

class AClass;

class BClass
{
    BClass();

private:
    AClass a;
}      
//b.cpp

#include "a.h"