Мне нужно сделать случайную колоду карт, но я нуб, поэтому мне нужна помощь.
И есть несколько заказов.
он говорит, что мне нужно сделать тип перечисления Rank
а также Suit
конструктор без аргументов, который устанавливает значения переменных экземпляра в TWO
а также
CLUB
S (на самом деле я не понимаю, что это значит.)
конструктор Card (Rank rank, Suit suit)
это создает Card
объект
из ранга и масти
Два метода доступа, Rank getRank()
а также Suit getSuit()
, которые позволяют
клиент, чтобы получить ранг и масть карты.
Функция string toString()
который возвращает строку, идентифицирующую карту.
Поэтому я сделал некоторый код, но все еще не понял, что мне не хватает и что мне нужно.
код ниже:
// File: makeCards.cpp
// Creates some cards and displays them.
#include <iostream>
#include <iomanip>
#include "card.h"#include "random.h"
using namespace std;
// Constants
const int NUM_CARDS = 10;
int main() {
card deck[NUM_CARDS];
Random randomizer;
for (int i = 0; i < NUM_CARDS; i++) {
deck[i] = card((Rank) (randomizer.randomInteger(TWO, ACE)),
(Suit) (randomizer.randomInteger(CLUBS, HEARTS)));
}
for (int i = 0; i < NUM_CARDS; i++) {
cout << setw(3) << deck[i].toString();
}
cout << endl << endl;
return 0;
}
Это основной cpp, который уже создан.
А это мой card.h
:
#ifndef CARD_H
#define CARD_H
#include <string>
using namespace std;enum Rank {TWO, THREE, FOUR, FIVE, SIX, SEVEN,
EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE};
enum Suit {CLUBS, DIAMONDS,HEARTS, SPADES};
class card
{
public:
card();
card(Rank rank, Suit suit);
Rank getRank();
Suit getSuit();
string toString();
private:};
#endif // CARD_H
мой card.cpp
:
#include "card.h"
card::card()
{
card();
}card::card(Rank rank, Suit suit)
{
string rank;
string suit;
}
Rank getRank()
{
return rank;
}
Suit getSuit()
{
return suit;
}
string toString()
{
switch(rank)
{
case 1:
cout<<2;
break;
case 2:
cout<<3;
break;
default:
cout<<"default";
}
}
Это действительно долго, но я понятия не имею, что мне нужно внутри
card::card(Rank rank, Suit suit)
а также
есть ошибка
error: 'rank' was not declared in this scope
в card.cpp
в toString()
кто-то сказал, используя switch
лучше, поэтому я попытался, но если у вас есть идея получше, дайте мне знать.
Rank getRank()
{
return rank;
}
должно быть
Rank card::getRank()
{
return rank;
}
то же самое для других методов класса из card.cpp. Они являются методом класса, пытающимся получить доступ к членам класса.
И конечно нужно
Rank rank;
Suit suit;
в объявлении вашего класса.
Ваш конструктор должен быть примерно таким:
card::card(Rank prank, Suit psuit) : rank(prank), suit(psuit)
{
}
то есть, вы используете список инициализации для инициализации ваших переменных-членов.
Из вашего кода:
string rank; string suit;
объявляет две строки, но ничего больше …
Других решений пока нет …