visual c++头文件类声明



在我的c++项目中,我有我的" cards "。和";cards.cpp"文件,和"卡片"。文件声明3类:卡、甲板、手

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
}

编译器在play方法中给了我一个错误。和";Hand"错误提示"未知类型名称deck","未知类型名称hand"。它怎么能看不到在同一个。h文件中声明的类呢?c++从上到下读取文件吗?

  • 我也不能把Card类放在底部,因为Deck and Hand使用Card
  • 我必须把所有3类在同一个文件中,"cards.h"文件。

你是正确的。c++需要从上到下进行声明。旁注:类声明的语法不正确。每个类都需要在最后一个结束花括号后以分号结束。我测试了你的例子,它工作良好。

您可以将这些类分离到它们自己的文件中,并使用前向类声明,因为每个类都需要其他类。或者您可以将它们保留在同一个文件中,并在使用之前添加forward类声明。像下面。

#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
};

最新更新