C 类方法声明返回错误

C++ Class Methods Declaration Returns Error

本文关键字:错误 返回 声明 类方法      更新时间:2023-10-16

我最近开始使用C 类工作,并在我达到错误时才刚刚开始。我有一个" resource.h"文件,其中包含两个类的类定义:'deck'和'card'。我在另一个文件" card.cpp"中 #include d。在card.cpp文件中,我描述了"卡"类的所有方法/功能。但是,在编译时,我会收到以下错误(FYI我正在使用命令行的mingw编译器):

card.cpp:3:29:错误:ISO C 禁止声明" setCard",否 键入[-fp immissive] card.cpp:3:1:错误:'int原型 card :: setcard(char,char)"不在课堂'卡中添加任何内容 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

Card::setCard(char f, char s) {
    face = f;
    suit = s;
}

应该是

void Card::setCard(char f, char s) {
    face = f;
    suit = s;
}

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

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

如果您认为这是神秘的,请紧紧抓住模板。编译器有为他们生成大错误消息的历史。