Я пытаюсь создать программу, которая будет иметь класс для игровой карты. Однако я столкнулся с ошибкой «неинициализированной локальной переменной». Я не могу для жизни понять, почему, поскольку я думал, что конструкция по умолчанию инициализирует переменные для меня. Я поставил свой код ниже, чтобы описать мою проблему.C++ Playing Card Class
#include "Card.h"
#include <iostream>
using namespace std;
int main() {
Card Hand('D','H');
Hand.getSuit();
return 0;
}
Это мой драйвер, которым должен управлять класс. Вот мой файл программы:
#include "Card.h"
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
Card::Card()
{
suit = 'H';
rank = '1';
worth = 1;
}
Card::Card(char b , char h)
{
suit = 'H';
rank = 'H';
worth = 1;
}
char getSuit(){
char suit = suit;
cout << suit;
return suit;
}
А вот мой файл заголовка:
#ifndef CARD_H
#define CARD_H
class Card
{
private:
char suit;
char rank;
int worth;
public:
Card::Card();
Card::Card(char, char);
char getSuit();
char getRank();
int getWorth();
};
#endif
Также я бы назвал это плохой практикой, чтобы назвать как локальную переменную, так и переменную класса в одной функции «костюм». Делает это чертовски много запутанным ... – SinisterMJ
Да, для этого нужно какое-то «это» или какое-то другое имя. Я закончу. – Morwenn
Просто удалите 'char suit = suit;', и тогда все в порядке. –