3

在 A.hpp 文件中,我有一个结构,它有一个 B 类的指针

struct state
{
    B  *b;
};

在 A.hpp 文件中,我添加了一个前向声明,并将 B.hpp 文件包含在 A.cpp 文件中

//A.hpp
class B

在 B.hpp 文件中,函数使用在 A.hpp 中声明的状态作为函数的参数。

bool function_in_b(state *s)

我还在 B.hpp 文件中添加了 A 的前向声明,并在 B.cpp 文件中添加了 A 的头文件 A.hpp。

//B.hpp
class A

所有头文件都有一个头保护。如果我尝试编译,它将找不到在 A.hpp 中声明的“状态”。因此,它不会找到匹配函数并抱怨候选人是

bool function_in_b(int *) 

我该如何解决这个问题?

4

2 回答 2

2

B.hpp中,您说您是 forward-declared A,但不是state- 所以当它第一次看到function_in_b(state *s)它时,它不知道是什么state。当你加入A.hppB.cpp时为时已晚。您需要转发声明stateB.hpp

struct state;

bool function_in_b(state *s);
于 2012-04-11T21:23:22.410 回答
1

在 B.hpp 文件中,在声明之前function_in_b(state *),前向声明state类型:

struct state;
于 2012-04-11T21:23:13.563 回答