C ++标题和cpp文件 - 我如何管理它们?

时间:2013-02-25 23:38:09

标签: 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();
}

但我得到一个错误,说“甲板未定义”。但是由于Game.cpp包含Game.h,Game.h应该包含Deck.h吗?

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

"Uses undefinied class Deck Game.cpp"

"Deck class redeclaration Deck.h"

我根本不明白这一点......

1 个答案:

答案 0 :(得分:2)

你应该看到这个stackoverflow问题解释了包括警卫

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