C++类方法声明返回错误

Nig*_*4de 3 c++ types compiler-errors class declaration

我最近开始使用C++类,刚刚遇到错误时就开始了.我有一个"resource.h"文件,其中包含两个类的类定义:'deck'和'card'.我把#include这个文件放在另一个文件"card.cpp"中.在card.cpp文件中,我描述了'card'类的所有方法/功能.但是在编译时我得到以下错误(fyi我使用MinGW编译器作为命令行):

card.cpp:3:29:错误:ISO C++禁止声明'setCard'没有类型[-fp ermissive] card.cpp:3:1:错误:原型为'int Card :: setCard(char,char)'在类'Card'资源中没有任何内容.: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 () {}
Run Code Online (Sandbox Code Playgroud)

"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];
};
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个问题,为什么编译器认为"Card :: setChard()"是一个问题 int

Luc*_*ore 8

Card::setCard(char f, char s) {
    face = f;
    suit = s;
}
Run Code Online (Sandbox Code Playgroud)

应该

void Card::setCard(char f, char s) {
    face = f;
    suit = s;
}
Run Code Online (Sandbox Code Playgroud)

一些提示帮助我得出了这个惊人的结论:

  • C++禁止声明'setCard'没有类型
  • 候选人是: void Card::setCard(char, char)

如果你认为这是神秘的,那么当你进入模板时,请坚持下去.编译器有为它们生成错误消息的历史.