Witam. Na uczelnię muszę napisać banalny program tworzący, tasujący i zwracający karty. Stworzyłem poniższą klasę:
Card.h
#pragma once
#include <string>
class Card
{
public:
Card(int face, int suit);
std::string toString() const;
};
Card.cpp
#include <string>
#include <array>
#include "Card.h"
using namespace std;
const static array<string, 13> Faces = { "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
const static array<string, 4> Suits = { "Hearts", "Spades", "Diamonds", "Clubs" };
int _face = 0;
int _suit = 0;
Card::Card(int face, int suit)
{
_face = face;
_suit = suit;
}
string Card::toString() const
{
return Faces[_face] + " of " + Suits[_suit];
}
Oczywiście zdaję sobie sprawę że mógłbym użyć typu enum zamiast używać int'ów itp. ale program ma być napisany zgodnie z wytycznymi. Nie jest to również istotą problemu. Mianowicie kiedy tworzę obiekt typu **Card **i przekazuję do konstruktora wartości 4 i 3 to wywołanie toString() prawidłowo zwraca Five of Clubs. Jednakże jeśli wykonam poniższy kod:
Card card(4, 3);
Card card2(6, 2);
cout << card.toString() << endl;
cout << card2.toString() << endl;
to w konsoli otrzymuję dwa razy Seven of Diamonds zamiast Five of Clubs i Seven of Diamonds. Wychodzi na to że zmienne _face i _suit nie należą do instancji klasy.
Nie mam pojęcia dla czego tak się dzieje. Co robię źle?