gpt4 book ai didi

c++ - 前向声明错误的循环依赖

转载 作者:太空狗 更新时间:2023-10-29 21:27:03 28 4
gpt4 key购买 nike

在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

所有的头文件都有一个header guard。如果我尝试编译,它不会找到 A.hpp 中声明的“state”。因此,它不会找到匹配函数并提示候选人是

bool function_in_b(int *) 

我该如何解决这个问题?

最佳答案

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

struct state;

bool function_in_b(state *s);

关于c++ - 前向声明错误的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114078/

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