2013-02-16 61 views
0

这是我的卡结构的头文件:C++的构造函数“卡::卡”没有实例的参数列表匹配

#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卡成员变量:

#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; 
} 

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

回答

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

一定不是这种

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

+0

非常感谢您,在编写一些解析代码后感到困惑。 – HoKy22 2013-02-16 21:56:56

1

你的构造函数需要适合然后排名。

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

当你在这里创建它时,你的参数是向后的。

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

非常感谢你,写了一些解析代码后,感到困惑。 – HoKy22 2013-02-16 21:58:38

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

应写为:

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

因为第一个参数CardSuits,和第二应Ranks

+0

非常感谢你,写了一些解析代码后,感到很困惑。 – HoKy22 2013-02-16 21:55:57

1

如果tenhearts的类型是SuitsRanks,那么它看起来像你只是有你的构造函数参数错误的顺序。构造函数是Card(Suits, Ranks),但您试图拨打Card(Ranks,Suits)。切换你的构造函数参数,它应该工作。

+0

是的,没错!谢谢! – HoKy22 2013-02-16 22:02:21

相关问题