C 中兩個類中互相包含對方物件的指標問題

2022-02-24 10:00:33 字數 1109 閱讀 2270

前幾天很不爽,因為c++中兩個類中互相包含對方物件的指標編譯時提示某乙個類未定義。。。所以我就想啊想,這樣也對,我的標頭檔案都有#ifndef的,包含了一次就不能再包含了,以為就實現不了這樣的功能,於是就改了設計方案:

class

aprivate

: b*m_pb;

};class

bprivate

:

intm_i;

};

只在乙個類中包含另乙個類的指標(算是聚類吧,a不管理m_pb的死活),而在b需要a的屬性時通過傳遞引數進去。這樣有些麻煩,但是勉強達到了我的需求。

裡面說的和我需要的差不多,解決方法是一樣的。

文章裡面說的很清楚了,我也在這裡複述一遍吧,主要解決的就是檔案包含的問題:在a的標頭檔案(a.h)中包含b的標頭檔案(b.h),在a的原始檔(a.cpp)中包含(a.h),在b的標頭檔案中使用a的宣告(class a;)而不是包含a的標頭檔案,然後在b的原始檔(b.cpp)中包含a的標頭檔案和b的標頭檔案。**如下:

//

a.h#include "

b.h"

class

a

void

useb();

private

: b*m_pb;

};//

a.cpp

#include "

a.h"

void

a::useb()

class

a;class

b

void

usea();

private

: a*m_pa;

};//

b.h#include "

a.h"

#include

"b.h

"void

b::usea()

這樣的話b的標頭檔案中不能有使用a的物件指標m_pa的**,否則會出現「使用了未定義的a」錯誤。

最後,問題算是解決了,但是我現在還是有點不明白的,這c++標頭檔案的包含和類的宣告等等都應該牽涉到編譯器的編譯順序問題,忘大師為我講解下這是為什麼。

謝謝觀眾的捧場!

c 中兩個類互相包含引用怎麼處理

在構造自己的類時,有可能會碰到兩個類之間的相互引用問題,例如 定義了類a類b,a中使用了b定義的型別,b中也使用了a定義的型別 class a class b 請注意上面的定義內容,一般情況下是不能出現類a,類b相互引用都定義物件,即如下的樣子 class a class b 在這種情況下,想想能夠...

C 中兩個類的標頭檔案互相包含問題

我們知道,當乙個類 設類a 中包含另乙個類 設類b 的物件時,必須在該檔案中包含另乙個類的標頭檔案,如果兩個類都互用到了對方的物件,理論上就要互相包含標頭檔案,但是這樣是不可取的。貼出 如下 檔案a.h中的 02.pragma once 03.include b.h 04.class a 05.09...

C 中兩個類互相引用

一 問題描述 現在有兩個類a和b需要定義,定義a的時候需要用到b,定義b的時候需要用到a。二 分析 a和b的定義和呼叫都放在乙個檔案中肯定是不可以的,這樣就會造成兩個迴圈呼叫的死迴圈。根本原因是 定義a的時候,a的裡面有b,所以就需要去檢視b的佔空間大小,但是檢視的時候又發現需要知道a的佔空間大小,...