我最近开始使用C ++类,刚刚遇到错误时就开始了。我有一个“resource.h”文件,其中包含两个类的类定义:'deck'和'card'。我#include
将此文件放在另一个文件“card.cpp”中。在card.cpp文件中,我描述了'card'类的所有方法/功能。但是在编译时我得到以下错误(我在命令行使用MinGW编译器):
card.cpp:3:29:错误:ISO C ++禁止'setCard'声明为no type [-fp ermissive] card.cpp:3:1:error:'int的原型 Card :: setCard(char,char)'在类'Card'中没有任何匹配 resource.h:9:8:错误:候选者是:void Card :: setCard(char,char)
“card.cpp”文件:
#include "resource.h"
Card::setCard(char f, char s) {
face = f;
suit = s;
}
Card::Card (char face, char suit) {
setCard(face, suit);
}
Card::~Card () {}
“resource.h”文件:
typedef unsigned short int UINT;
class Card;
class Deck;
class Card {
public:
Card(char face, char suit);
~Card();
void setCard(char face, char suit);
char getFace() const { return face; }
char getSuit() const { return suit; }
private:
char face;
char suit;
};
class Deck {
public:
Deck();
~Deck();
Card getCard(UINT x);
private:
Card myCards[54];
};
是什么导致了这个问题,为什么编译器认为“Card :: setChard()”是int
答案 0 :(得分:8)
Card::setCard(char f, char s) {
face = f;
suit = s;
}
应该是
void Card::setCard(char f, char s) {
face = f;
suit = s;
}
一些提示帮助我得出了这个惊人的结论:
void Card::setCard(char, char)
如果你认为这是神秘的,那么在你进入模板时请紧紧抓住。编译器有为它们生成错误消息的历史。