这是简化的代码!我有 C++ 文件(在哪里实现)和头文件(在哪里是类定义)!
我有一个文件:Foo.cpp包含main.h。我有使用函数 Foo.cpp并且还包括main.h的文件Bar.cpp。它使用 struct 访问 Foo 对象并调用它的函数。但是main.h中定义的结构?我试图这样解决它:
**IN MAIN.H**
#pragma once
class Foo;
struct FoobarPackage {
FoobarPackage(Foo *fooObj) {
soso = fooObj;
}
Foo *soso;
};
* * *
**IN FOO.CPP**
#pragma once
#include "main.h"
class Foo {
void doSomething(bool ololo) {
if (ololo) //do something else
}
};
* * *
**IN BAR.CPP**
#pragma once
#include "main.h"
#include "Foo.cpp"
class Bar {
bool killAllHumans(FoobarPackage planet) {
planet.soso->doSomething(true);
return true;
}
};
* * *
但这会导致:
Bar.cpp:8: error: invalid use of incomplete type "struct(WTF??!!! — author's comment) Foo"
main.h:3: error: forward declaration of "struct(why struct?) Foo"
我的代码有什么问题?它也不是真正的代码。我简化了我的真实项目并削减了所有不需要的东西。Foo.cpp 和 Bar.cpp 当然有它们的头文件,其中 Foo 和 Bar 类定义在.cpp文件中,它只是它们的实现。也killAllHumans()
从位于的 main.cpp 调用main()
。
*已编辑*
我知道这#include
适用于标题,但我写道它是“伪代码”。我在我的 readl 项目中使用头文件和 cpp 文件,并且只包含头文件并且#pragma once
在我的头文件中。在这个问题中,我只简化我的代码!请在回答之前阅读所有问题!
* EDITED2 * 现在尝试编译它。有用。奇怪的。
谢谢。