c++ - 如何解决这种循环依赖?
问题描述
我有三个结构如下的标题:
巴兹
#pragma once
#include "foo.h"
class Foo;
class Bar;
class Baz
{
};
酒吧.h
#pragma once
#include "foo.h"
class Foo;
class Baz;
class Bar : public Foo
{
};
foo.h
#pragma once
#include "baz.h"
#include "bar.h"
class Baz;
class Bar;
class Foo
{
};
包括这些标题当前给我的错误bar.h
,说基类Foo
是未定义的。
我以为我已经围绕循环依赖进行了思考,并相应地添加了前向声明,那么为什么这段代码不能编译呢?
解决方案
这很明显,baz.h
需要bar.h
和foo.h
它foo.h
自己需要bar.h
和baz.h
。创建types.h
并转发声明这些类型并将它们包含到头文件中,并将实际类型头包含到源代码中。
或者简单地将所有类放入一个头文件中。
推荐阅读
- module - 将 Ansible 与阿里巴巴/阿里云模块一起使用
- xslt - fn:transform 使用默认调用模板调用运行 - 未创建结果文档
- pascal - 一行,多个输入?
- pdftron - PDFtron:更改元素名称
- amazon-web-services - Clickhouse 的 EFS
- arrays - 如何将不同形状的数组相乘?
- python - Javascript / Flask - 请求的资源上不存在“Access-Control-Allow-Origin”标头
- laravel-lighthouse - 同一输入字段上的两种类型 grapqhql 灯塔
- android - 在 LinearLayout 中将元素向右对齐
- google-sheets-formula - 谷歌表格子查询在哪里子句