C++ 头文件和 cpp 文件 - 我该如何管理它们?

标签 c++ header-files file-structure

当我试图在 VS2010 上构建我的解决方案时,我遇到了疯狂的、神秘的编译器错误。我真的很难理解这些包括如何工作。

Game.cpp
Game.h
Deck.cpp
Deck.h
Card.h

// Game.cpp
#include "Game.h"

一切都好。现在我需要创建一个新的牌组:

// Game.h
private:
    static Deck _deck;

那么我需要包含 Deck.h,以便它知道它是什么:

// Game.h
#include "Deck.h"
class Game {
private:
    Deck _deck;
}

好的,没问题。但现在我需要使用Game.cpp中的_deck

// Game.cpp
#include "Game.h"
Deck Game::_deck;
void Shuffle(void)
{
     _deck = Deck();
     _deck.Shuffle();
}

但是我收到一条错误消息“Deck 未定义”。但是既然Game.cpp包含Game.h,Game.h应该包含Deck.h吗?

如果我将 Deck.h 添加到 Game.cpp 中,我会得到:

"Uses undefinied class Deck Game.cpp"

"Deck class redeclaration Deck.h"

完全不懂这个……

最佳答案

您应该看到这个 stackoverflow 问题,其中解释了包含防护

Why are #ifndef and #define used in C++ header files?

关于C++ 头文件和 cpp 文件 - 我该如何管理它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078648/

相关文章:

unordered_map 中 operator[] 的 C++ 特化

c++ - 循环迭代问题c++

c++ - 将字符串文字传递给模板字符数组参数

c - 'typedef' 之前的预期说明符限定符列表 - 一个具有结构体 typedef 的 H 文件,而其字段写入另一个 H 文件中

python - Flask 不渲染模板,可能是文件结构的问题

visual-studio-2010 - 如何在 Visual Studio 中重定位源文件?

java - Java 系统包存储在哪里?

c++ - 递归查找元素 (C++)

c++ - Visual C++ 和 Allegro5 : cannot recognize objects from abstract class from header file

C++ 头文件重新定义错误