【发布时间】:2020-11-21 23:16:55
【问题描述】:
我有一个游戏类如下:
// game.h
class Game {
public:
void Run();
void CleanUp();
}
我想创建一个在此处声明但在构造时启动的纹理指针。此指针指向存在于第三方头文件中的类型:
private:
std::unique_ptr<Texture> sprite_sheet; // Texture is in game_engine.h which is third party.
问题是,如果我在此标头中 #include "game_engine.h",那么包含此标头的每个文件都将包含 game_engine 中的所有内容,我想避免这些内容。理想情况下,我只想在源文件 (.cpp) 中包含 game_engine。
是否有标准的设计模式可以帮助我避免这种情况?
一种方法是创建我自己的Texture 类,它只公开我想要的相关部分。但这会慢慢变得不成比例,因为我必须为所有事情重新做我自己的课程。
【问题讨论】:
-
你可能正在寻找疙瘩成语。
-
进一步研究的术语是“前向声明”。在头文件中
class Game {之前添加这一行:class Texture; -
为什么不希望头文件包含在其他源文件中?
-
@IgorTandetnik - 谢谢,我试过了,但我收到一个错误 -
Use of undefined type Texture。Texture是第三方库中的struct,这会有所不同吗? -
在哪一行代码中出现“使用未定义类型纹理”错误? This code compiles;有问题的话,一定是代码中没有显示出来。
标签: c++