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、2 番目の引数は である必要があるためRanksです。

于 2013-02-16T21:53:19.677 に答える
1

とがタイプでありten、それに応じて、コンストラクターの引数が間違った順序になっているように見えます。コンストラクタはですが、 を呼び出そうとしています。コンストラクターの引数を切り替えると、機能するはずです。heartsSuitsRanksCard(Suits, Ranks)Card(Ranks,Suits)

于 2013-02-16T21:53:28.250 に答える