makeCards с random.h и card.h в переполнении стека

Мне нужно сделать случайную колоду карт, но я нуб, поэтому мне нужна помощь.
И есть несколько заказов.

  1. он говорит, что мне нужно сделать тип перечисления Rank а также Suit

  2. конструктор без аргументов, который устанавливает значения переменных экземпляра в TWO а также
    CLUBS (на самом деле я не понимаю, что это значит.)

  3. конструктор Card (Rank rank, Suit suit) это создает Card объект
    из ранга и масти

  4. Два метода доступа, Rank getRank() а также Suit getSuit(), которые позволяют
    клиент, чтобы получить ранг и масть карты.

  5. Функция 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 лучше, поэтому я попытался, но если у вас есть идея получше, дайте мне знать.

0

Решение

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;

объявляет две строки, но ничего больше …

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]