循环依赖问题

时间:2012-10-29 09:06:30

标签: c++ visual-c++

我有一个设计问题。

我有三个独立的类,即A,B和C.A类有一个B类数组对象.B类有一个C类对象。

现在,我想从C类中的A类访问一个函数。

我怎样才能完成它?

以下是一些代码:

文件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。我也尝试在classC.cpp中包含classA.h,但仍然无法访问ClassA中的函数。

非常感谢。

Chintan

3 个答案:

答案 0 :(得分:3)

正如@jogojapan所说,这更像是circular dependency问题。

您可以将指针成员用于C类中的A类并使用前向声明。

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

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

答案 1 :(得分:0)

不确定你基本上想要我能想到的是什么:

在C类中创建A类的对象,并使用C类中存在的对象访问A类的函数

答案 2 :(得分:0)

如果要在Class A中调用Class C及其对象的方法,则不需要实现继承,如果要使用{{1}调用Class A的方法然后你需要实现继承。