Ich habe den folgenden Code, wo ich ein Kartenspiel erzeuge. Zuerst ermittle ich den Anzug mit der Funktion convertIntToSuit, die dann in die nächste Schleife geht, um das Kartenspiel zu füllen. Aber ich halte die folgende Fehlermeldung erhalten:Fehler bei der Verwendung von push_back mit einem struct Datentyp C++
Running /home/ubuntu/workspace/A5/Assignment5/main.cpp
make: Entering directory `/home/ubuntu/workspace/A5/Assignment5'
Compiling main.o
g++ -Wall -g -O3 -std=c++11 -I/usr/include -c -o main.o main.cpp
main.cpp: In function ‘int main()’:
main.cpp:39:33: error: no matching function for call to ‘std::vector<Card>::push_back(<brace-enclosed initializer list>)’
deck.push_back({i,s});
Hier ist mein Code:
// The include section adds extra definitions from the C++ standard library.
#include <iostream> // For cin, cout, etc.
#include <iomanip> // For text formatting (setprecision, setw, etc.)
#include <cmath> // For math functions (sin, cos, pow, etc.)
#include <cstdlib>
#include <vector>
#include <string>
#include"convertIntToSuit.h"
#include"printCard.h"
//#include"shuffleDeck.h"
using namespace std;
struct Card {
string suit;
int rank;
};
int main() {
vector<Card> deck;
for(int j = 0; j<4; ++j){
string s = convertIntToSuit(j);
for(int i=1; i<=13; ++i){
deck.push_back({i,s});
}
}
return 0;
}
Der erste Wert in der Klammer-Initialisierungsliste ist eine ganze Zahl, die zweite ist eine Zeichenfolge. Jetzt starrst du weiter auf deine "Card" -Klasse, bis du deinen eigenen Bug siehst. –
Danke, ich dachte, ich hätte die gewechselt, aber ich denke nicht –