--EDIT -- 很抱歉让人们感到困惑,我只是快速输入了这段代码,而不是复制和粘贴,所以我实际上在我的代码中执行了#ifndef A_H #define A_H。我更改了以下代码以显示
-- 结束编辑 --
我有两个类,每个类都包含一个指向另一个类的实例的指针,但这给我带来了问题。我的代码类似于以下
// A.h
#ifndef A_H
#define A_H
class B; // compiler error here
class A
{
B* foo;
// other members and functions
};
#endif
// A.cpp
#include "A.h"
#include "B.h"
/*
declare functions and use methods in both A and B
*/
// B.h
#ifndef B_H
#define B_H
class A;
class B
{
A** bar;
// other stuff
};
#endif
//B.cpp
#include "A.h"
#include "B.h"
/*
declare functions and use methods in both A and B
*/
有人告诉我,在头文件中前向声明另一个类,然后在 cpp 文件中包含另一个文件会起作用,但是在标记的行上我收到一个错误,只是说“前向声明'struct b'”
谁能告诉我我做错了什么?