我首先在 a.cpp 中定义了结构 A。
// a.cpp
#include"a.h"
struct A {
A(int num):a(num){}
int a;
};
A obj{1};
A* obj_ptr = &obj;
在标题中,我做了 A 的前向声明和 obj_ptr 的声明:
// a.h
struct A;
extern A* obj_ptr;
然后我想在另一个名为 b.cpp 的 cpp 文件中使用 obj,但编译器报告错误:无效使用不完整类型“struct A”
// b.cpp
#include<iostream>
#include"a.h"
int main(){
std::cout << obj_ptr->a << std::endl;
}
修复它的一种方法是将 A 的定义从 a.cpp 移动到 ah,但我想知道是否还有其他方法可以修复它?