gpt4 book ai didi

C++ 错误 'Undefined reference to Class::Function()'

转载 作者:IT老高 更新时间:2023-10-28 13:59:28 39 4
gpt4 key购买 nike

我想知道是否有人可以帮助我解决这个问题 - 我只是 C++ 新手,这给我带来了很多麻烦。

我正在尝试制作相对简单的 Deck 和 Card 类对象。

错误出现在“Deck.cpp”中,声明了一组卡片,然后当我尝试用卡片对象填充数组时。它表示对 Card::Card()Card::Card(Card::Rank, Card::Suit)Card::的引用未定义~Card().

我的所有包含似乎都是正确的,所以我不知道出了什么问题。

代码如下:

甲板.h

#ifndef DECK_H
#define DECK_H
#include "card.h"

class Deck
{
public:
Deck();
~Deck();
Card DealNextCard();
void Shuffle();
void DisplayDeck();
protected:
private:

};

#endif // DECK_H

deck.cpp

#include "Deck.h"
#include "card.h"

using namespace std;

const int NUM_TOTAL_CARDS = 52;
const int NUM_SUITS = 4;
const int NUM_RANKS = 13;
Card* cardArray;
void Deck() {
cardArray = new Card[NUM_TOTAL_CARDS];
int cardCount = 0;
for (int i = 0; i > NUM_SUITS; i++) {
for (int j = 0; j > NUM_RANKS; j++) {
cardArray[cardCount] = Card(Card::Rank(i), Card::Suit(j) );
cardCount++;
}
}
}


Card DealNextCard();
void Shuffle();
void DisplayDeck();

card.h

class Card
{

public:
enum Suit {D=0, H, C, S};
enum Rank {ONE=0, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, J, Q, K, A};
Card(Card::Rank, Card::Suit);
Card();
virtual ~Card();
Card::Suit suit;
Card::Rank rank;
Card::Rank GetRank();
Card::Suit GetSuit();
std::string CardName();

protected:

private:

};

#endif // CARD_H

card.cpp

#include "card.h"
using namespace std;


Card::Suit cardSuit;
Card::Rank cardRank;

void Card() {
//nothing
}


void Card(Card::Rank rank, Card::Suit suit) {
cardRank = rank;
cardSuit = suit;
}

Card::Rank GetRank() {
return cardRank;
}
Card::Suit GetSuit() {
return cardSuit;
}
std::string CardName() {
string test;
test = "testing string";
return test;
}

最佳答案

你用什么来编译这个?如果存在 undefined reference 错误,通常是因为 .o 文件(从 .cpp 文件创建)不存在,并且您的编译器/构建系统无法链接它。

另外,在您的 card.cpp 中,函数应该是 Card::Card() 而不是 void CardCard::作用域;这意味着您的 Card() 函数是 Card 类的成员(显然是,因为它是该类的构造函数)。没有这个,void Card 只是一个免费的功能。同样,

void Card(Card::Rank rank, Card::Suit suit)

应该是

Card::Card(Card::Rank rank, Card::Suit suit)

此外,在deck.cpp 中,您说的是#include "Deck.h",即使您将其称为deck.h。包含区分大小写。

关于C++ 错误 'Undefined reference to Class::Function()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712821/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com