0

这是我的 Card 结构头文件:

#include "stdafx.h"
enum Suits {clubs, diamonds, hearts, spades};
enum Ranks {two = 2, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace};

struct Card {   
    Card (Suits suit, Ranks rank);
private:
    Suits suit_;
    Ranks rank_;
};

我在我的 cpp 中初始化 Card 成员变量:

#include "stdafx.h"    
#include "Card.h"
#include "Header.h"

using namespace std;

Card::Card (Suits suit, Ranks rank) : suit_(suit), rank_(rank) {}

现在,我正在尝试在一个函数中解析一堆卡定义字符串,例如 2C、3h、7s、10h

int FileParsing(vector<Card> & v, char * FileName) {
    ... //omiting the details, basically open FileName, parse card definition strings
    //After I finish parsing 10h, I tried to push it back
    v.push_back(Card(ten, hearts)); //got an error here
    ... 
    return 0;
}

我的怀疑是卡片(西装,等级)中的类型冲突,但我不确定。任何输入将不胜感激!!!

4

4 回答 4

3
v.push_back(Card(ten, hearts)); //got an error here 

这一定不是

v.push_back(Card(hearts, ten));

?

于 2013-02-16T21:52:51.057 回答
1

您的构造函数采取诉讼然后排名。

Card::Card (Suits suit, Ranks rank) : suit_(suit), rank_(rank) {}

当您在此处创建参数时,您的参数是向后的。

v.push_back(Card(hearts, ten));
于 2013-02-16T21:53:14.340 回答
1
v.push_back(Card(ten, hearts)); //got an error here

应该写成:

v.push_back(Card(hearts, ten)); //fixed

因为第一个参数Card应该是Suits,第二个应该是Ranks

于 2013-02-16T21:53:19.677 回答
1

如果tenandhearts是相应的类型SuitsRanks那么看起来您的构造函数参数的顺序错误。构造函数是Card(Suits, Ranks),但您正试图调用Card(Ranks,Suits). 切换您的构造函数参数,它应该可以工作。

于 2013-02-16T21:53:28.250 回答