具有前向声明的相互依赖的 .h 文件
Co-Dependent .h files with forward declaration
我在不同的 .h 文件中有 3 个 类(A、B 和 C)。我怎样才能移动 #include
s 和前向声明以使其编译。
目前我在 A.h 中使用了前向声明,并认为它可以从那里开始工作。相反 C.h 抛出许多 'class A' is inaccessible with in this context
的编译器错误。
// A.h
#pragma once
...
class B;
class A {
private:
B *parent_;
};
// B.h
#pragma once
...
#include <A.h>
class B : A {
public:
virtual void func(A *arg);
};
// C.h
#pragma once
...
#include <A.h>
#include <B.h>
class C : B {
public:
virtual void func(A *arg);
private:
A *left_child;
A *right_child;
};
名称 A
通过 B
是私有的。您可以在 B
中更改为 public 或保护继承,或者在 C
中使用(完全限定名称)::A
我在不同的 .h 文件中有 3 个 类(A、B 和 C)。我怎样才能移动 #include
s 和前向声明以使其编译。
目前我在 A.h 中使用了前向声明,并认为它可以从那里开始工作。相反 C.h 抛出许多 'class A' is inaccessible with in this context
的编译器错误。
// A.h
#pragma once
...
class B;
class A {
private:
B *parent_;
};
// B.h
#pragma once
...
#include <A.h>
class B : A {
public:
virtual void func(A *arg);
};
// C.h
#pragma once
...
#include <A.h>
#include <B.h>
class C : B {
public:
virtual void func(A *arg);
private:
A *left_child;
A *right_child;
};
名称 A
通过 B
是私有的。您可以在 B
中更改为 public 或保护继承,或者在 C
::A