C++ 对结构数据类型c+使用push#u-back时接收错误+;
我有下面的代码,我正在生成一副牌。 首先,我使用函数convertintosuit确定套装,然后进入下一个循环填充卡片组。但我一直得到以下错误:C++ 对结构数据类型c+使用push#u-back时接收错误+;,c++,c++11,C++,C++11,我有下面的代码,我正在生成一副牌。 首先,我使用函数convertintosuit确定套装,然后进入下一个循环填充卡片组。但我一直得到以下错误: 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/inclu
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});
Running/home/ubuntu/workspace/A5/Assignment5/main.cpp
make:进入目录“/home/ubuntu/workspace/A5/Assignment5”
编译main.o
g++-Wall-g-O3-std=c++11-I/usr/include-c-o main.o main.cpp
main.cpp:在函数“int main()”中:
main.cpp:39:33:错误:调用“std::vector::push_back()”时没有匹配的函数
甲板。推回({i,s});
这是我的密码:
// 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;
}
<代码> //包含部分从C++标准库中添加额外的定义。
#包括//用于cin、cout等。
#包含//用于文本格式(setprecision、setw等)
#包括//用于数学函数(sin、cos、pow等)
#包括
#包括
#包括
#包括“convertIntToSuit.h”
#包括“printCard.h”
//#包括“shuffleDeck.h”
使用名称空间std;
结构卡{
线装;
整数秩;
};
int main(){
向量甲板;
对于(int j=0;j每次迭代都这样做:-
Card c1;
c1.suit=s;
c1.rank=i
deck.push_back(c1);
或
您正在做的是:-
deck.push_back({s,i});
string
将排在int
之前,因为您的struct声明
push_back
函数无法理解您要向其发送的内容。将Card
的两个属性括在花括号中是不够的。您必须在发送i之前构造Card
结构t向后推。这里有两个选项:
deck.push_back(卡片{s,i});
struct Card {
string suit;
int rank;
Card(string s = string(), int r = 0) : suit(std::move(s)), rank(r) {}
};
for (int i=1; i<=13; ++i){
deck.emplace_back(i,s);
}
结构卡{
线装;
整数秩;
卡片(strings=string(),intr=0):套装(std::move(s)),等级(r){
};
对于(int i=1;括号内初始化列表中的第一个值是整数,第二个值是字符串。现在继续盯着你的
卡片类,直到你看到你自己的bug。谢谢,我以为我已经切换了它们,但我想卡片组之间没有任何区别。向后推({s,i});
和卡片组。向后推(卡片{s,i});
?