2012-10-29 200 views
0

我有一個設計問題。問題與循環依賴

我有三個獨立的類別,即A,B和C類A具有B級的陣列對象和B類具有類C的對象現在

,我要訪問從一個函數甲類在C類。

我該如何實現它?

下面是一些代碼:

文件classA.h:

#pragma once 
#include <classB.h> 

class classA 
{ 
    classB objB[10]; 
    void GetData(); 
}; 

文件classB.h:

#pragma once 
#include <classC.h> 
class classB 
{ 
    classC objC; 
} 

文件classC.h:

#pragma once 
#include <classA.h> 
class classC 
{ 
    classA objA; 
} 

的上面的代碼創建了一個循環,儘管如此我已添加#pragma once。我也嘗試將classA.h包含在classC.cpp中,但仍然無法訪問ClassA中的函數。

非常感謝。

Chintan

+5

沒有什麼在這裏做與繼承。 – Pubby

+1

看看你對這個問題所做的修改:真正的問題是頭文件的循環依賴嗎?這不是問題的標題所暗示的... – jogojapan

+0

@jogojapan:謝謝。我已經改寫了這個問題。 –

回答

0

不知道是什麼,你基本上要我能想到的是:

創造C類A類的對象,並訪問使用其對象A類的函數存在於類ç

0

如果你想調用的Class A的方法,其對象Class C,那麼你不必來實現繼承,如果你想調用Class A方法,採用Class C's對象,那麼你需要實現繼承。

3

由於@jogojapan說,這是更多的circular dependency問題。

您可以使用指向C類中的類A的指針成員並使用前向聲明。

class classA; 
class C{ 
    classA* objAPtr; 
}; 

然後在c.cpp您可以添加#include <classA.h>

+0

感謝您的鏈接和您的答案。乾杯。 –

+0

@chintans通過一個默認構造的classB對象數組獲得該classA ptr在構造時通過一個默認構造的classB對象的數組是一個全新的問題,尤其是如果您想確保classA ptr是* classA對象,並擁有classC的直接父對象ClassB的。 – WhozCraig