gpt4 book ai didi

c++ - 在 C++ 中包含头文件时的循环类依赖

转载 作者:太空宇宙 更新时间:2023-11-04 16:26:36 24 4
gpt4 key购买 nike

我正在使用 visual studio 2010 开发 C++ 程序。我有这些类定义和头文件:
嘘:

class s : oe {
...
};

t.h :

class t : oe {
...
};

oe.h :

class oe {
...
o getO();//we reference to class 'o' in oe.h, so we must include o.h begore oe.h
};

&o.h :

class o {
...
s getS();//we reference to class 's' in o.h, so we must include s.h begore o.h
};

问题是我们在oe.h中引用类'o',所以我们必须在oe.h之前包含o.h, & 我们还引用了 o.h 中的类 's',因此我们必须在 o.h 之前包含 s.h,但我们不能这样做,因为 s.h 需要 oe.h & oe.h 需要 o.h & o.h 需要 s.h !
如您所见,类依赖循环中存在某种循环,因此我无法编译该项目。如果我删除 s.h & t.h & oe.h 之间的依赖关系,问题就会解决(这里是 stdafx.h 用于此状态):

#include "s.h"
#include "t.h"
#include "o.h"
#include "oe.h"

但我必须使用所有给定的依赖项,而且我无法删除任何依赖项。有什么想法吗?

最佳答案

您可以使用前向声明并将实现移至实现文件来解决此问题。

不是为 s 包含 header ,而是转发声明它:

class s;

您可以将它用作除类的数据成员之外的几乎所有内容的不完整类型。 (前提是实现是分开的)。

这很可能没有解决根本问题,这是您的设计。

关于c++ - 在 C++ 中包含头文件时的循环类依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11242150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com