我正在尝试创建一个具有扑克牌类的程序,但是我遇到了“未初始化的局部变量'诉讼'使用过的”错误。我不能为我的生活找出原因,因为我认为默认构造会为我启动变量。 我把我的代码放在下面来描述我的问题。
#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
答案 0 :(得分:1)
char getSuit(){
char suit = suit;
cout << suit;
return suit;
}
你忘了告诉它是来自Card
的成员。它应该是:
char Card::getSuit(){
char suit = suit;
cout << suit;
return suit;
}
此外 - 感谢Anton - ,命名局部变量suit
不是一个好的实践,因为不再需要使用类属性suit
或局部变量{{1} }。您应该更改其名称或指定何时使用带有suit
的class属性(第一个选项更好)。
答案 1 :(得分:0)
您需要指定getSuit是Card类的一部分
char Card::getSuit()
另外:
char getSuit(){
char suit = suit;
cout << suit;
return suit;
}
你正在分配西装。尝试使用char suit = this.suit;
或者您可以重命名本地套装变量。