2012-10-29 67 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