C++ 头文件 class 声明

C++ header file class declaration

所以在我的 C++ 项目中,我有我的“cards.h”和“cards.cpp”文件,并且“cards.h”文件声明了 3 个 classes:牌、牌、手

class Card {
 private:
       // some private attributes
 public:
       // some public methods
       //.....

       void play(Deck& deck, Hand& hand); // This method plays the card, removes it from the hand, and places it in the deck 
}

class Deck {
private:
       vector<Card> deckCards;
public:
       // some public methods
}

class Hand {
private:
       vector<Card> handCards;
public:
       // some public methods
}

编译器在“Deck”和“Hand”上的播放方法中给我一个错误,错误为“Unknown type name Deck”、“Unknown type name Hand”。它怎么看不到在同一个.h 文件中声明的classes? C++ 是否从上到下读取文件?

你是对的。 C++ 需要声明从上到下。 附带说明 class 声明的语法不正确。每个 class 都需要在最后一个右花括号后以分号结束。我测试了你的例子,它工作正常。

您可以将 class 分成它们自己的文件并使用前向 class 声明,因为每个 class 都需要另一个。或者您可以将它们放在同一个文件中并在使用前添加前向 class 声明。如下所示。

#include <vector>
using namespace std;

class Deck;
class Hand;

class Card {
private:
    // some private attributes
public:
    // some public methods
    //.....

    void play(Deck& deck, Hand& hand) {}; // This method plays the card, removes it from the hand, and places it in the deck 
};

class Deck {
private:
    vector<Card> deckCards;
public:
    // some public methods
};

class Hand {
private:
    vector<Card> handCards;
public:
    // some public methods
};