C ++扑克牌课

时间:2013-05-02 08:18:26

标签: c++ visual-studio-2010 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

2 个答案:

答案 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;或者您可以重命名本地套装变量。