Tôi đã tự hỏi liệu có ai có thể giúp tôi với điều này không - tôi mới chỉ với C++ và nó gây ra cho tôi một số rắc rối.Lỗi C++ 'Không xác định tham chiếu đến Lớp :: Chức năng()'
Tôi đang cố gắng tạo các đối tượng Lớp và Thẻ tương đối đơn giản.
Lỗi hiển thị trong "Deck.cpp", khai báo một mảng thẻ và sau đó khi tôi cố gắng lấp đầy mảng bằng các đối tượng thẻ. Nó cho biết có một tham chiếu không xác định đối với Card::Card()
, Card::Card(Card::Rank, Card::Suit)
và Card::~Card()
.
Tôi đã có tất cả nội dung của tôi có vẻ đúng, vì vậy tôi không biết điều gì đang xảy ra.
Mã này là như sau:
deck.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;
}
Tất cả các định nghĩa chức năng phải như thế này, trong tệp CPP? ví dụ: Thẻ :: Thẻ xếp hạng :: GetRank() { thẻ trả lạiRank; } Thẻ :: Thẻ phù hợp :: GetSuit() { thẻ trả vềSuit; } –
@BenHarris: Vâng, đó là cách bạn xác định chức năng của thành viên –