【发布时间】:2016-02-06 20:15:06
【问题描述】:
我正在尝试制作两个包含自定义结构的不同向量,但是当我尝试将元素添加到向量时,它适用于“甲板”向量,但会引发“玩家”向量的错误。我是 C++ 新手,不知道哪里出了问题。
这些是它抛出的错误:
warning: extended initializer lists only available with -std=c++11 or -std=gnu++11|
error: no matching function for call to 'std::vector<BlackjackClass::player>::push_back(<brace-enclosed initializer list>)'|
这是我正在使用的代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class BlackjackClass {
private:
struct card
{
string label;
int value;
string suit;
};
vector<card> deck;
struct player
{
string name;
int bankroll;
int default_bet = 5;
};
vector<player> players;
public:
BlackjackClass()
{
// Works
deck.push_back({"Queen", 10, "Hearts"});
// Doesn't Work
players.push_back({"Jim", 500, 5});
}
};
int main()
{
BlackjackClass Blackjack;
}
【问题讨论】:
-
愚蠢的问题,但你使用的是 -std=c++11 吗?
-
我打开 -std=c++11 并消除了警告,但我仍然收到第二个错误。
-
@Karl-scmaltz 你试过创建卡片对象然后 push_back 吗?
-
在这种情况下,
emplace_back()似乎更能说明您的意图:players.emplace_back("Jim"s, 500, 5);
标签: c++ vector struct push-back