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

标签 c++ class types compiler-errors declaration

我最近开始使用 C++ 类,刚开始时遇到错误。我有一个“resource.h”文件,其中包含两个类的类定义:“deck”和“card”。我在另一个文件“card.cpp”中#included 这个文件。在 card.cpp 文件中,我描述了“card”类的所有方法/函数。但是在编译时我收到以下错误(仅供引用,我正在使用 MinGW 编译器作为命令行):

card.cpp:3:29: error: ISO C++ forbids declaration of 'setCard' with no type [-fp ermissive] card.cpp:3:1: error: prototype for 'int Card::setCard(char, char)' does not matc h any in class 'Card' resource.h:9:8: error: candidate is: 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)

如果您认为这很神秘,请在使用模板时稍等片刻。编译器有为他们生成大量错误消息的历史。

关于C++ 类方法声明返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124135/

相关文章:

c++ - 声明一个 C++ 类而不在当前翻译单元中定义它

C++排序数组是指向类的指针

c# - 如何知道继承的泛型类型的基类型?

c++ - io_service 如何将完成事件与完成处理程序匹配

c++ - 从知道其结构类型的实例中获取值

c++ - FFmpeg内存泄漏

c++ - SDL C++ 类函数错误

c++ - 获取指向结构的第一个元素的指针

java - 如何判断一个字符串是Double类型还是Long类型

c - sscanf() 将十六进制整数转换为整数数组与无符号字符