首页 > 解决方案 > 如何解决这种循环依赖?

问题描述

我有三个结构如下的标题:

巴兹

#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是未定义的。

我以为我已经围绕循环依赖进行了思考,并相应地添加了前向声明,那么为什么这段代码不能编译呢?

标签: c++circular-dependency

解决方案


这很明显,baz.h需要bar.hfoo.hfoo.h自己需要bar.hbaz.h。创建types.h并转发声明这些类型并将它们包含到头文件中,并将实际类型头包含到源代码中。

或者简单地将所有类放入一个头文件中。


推荐阅读