gpt4 book ai didi

C++ 不完整类型的分配

转载 作者:太空狗 更新时间:2023-10-29 19:58:44 25 4
gpt4 key购买 nike

我正在尝试创建 Card 和 Deck 类,但我收到一条错误消息

不完整类型'Card'的分配

问题发生在 Deck.cpp 的 Deck::Deck()

//
//甲板.h

#ifndef JS_DECK_H
#define JS_DECK_H

#include <iostream>
using std::cout;

#include <vector>
using std::vector;

//forward declaration
class Card;

namespace JS {
class Deck {

public:
Deck();
private:
vector<Card *>cards;
};

}

#endif

//
//甲板.cpp

#include "Deck.h"

using namespace JS;

Deck::Deck(){

for(int suit = 0; suit < 4; suit++){
for(int rank = 1; rank < 14; rank++){

cards.push_back(new Card(rank, suit));//allocation of incomplete type 'Card'
}
}
}

//
//卡片.h

#ifndef JS_CARD_H
#define JS_CARD_H

#include <ostream>
using std::ostream;

#include <string>
using std::string;

#include <vector>
using std::vector;

namespace JS {
class Card {

friend ostream &operator<<(ostream &out, const Card &rhs);

public:
enum Suit { DIAMONDS, HEARTS, SPADES, CLUBS };
enum Rank { ACE = 1, JACK = 11, QUEEN = 12, KING = 13 };

Card(int rank, int suit) : rank(rank), suit(suit){}

string getRank() const;
string getSuit() const;
int getRankValue() const;

int operator+(const Card& rhs);
void displayCard(const Card &rhs);

private:
int rank;
int suit;
};

}

#endif

最佳答案

Deck 的实现中(即 Deck.cpp 文件),您需要 完整 Card 的定义> 能够分配该类型的对象。所以解决方案就是在 Deck.cpp 中包含 Card.h

关于C++ 不完整类型的分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18251717/

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