Я пытаюсь создать вектор векторов в системе заклинаний для небольшой битвы RPG.Основная цель, которую я пытаюсь достичь, - это иметь вектор заклинаний, к которым игрок может получить доступ, и выбрать тип заклинаний, которые он хочет разыграть: огонь, лед и т. Д., А затем выбрать название заклинания: ожог, мороз,и т. д.
Код ниже - это то, что я объявил Spell и FireSpell как.Я пытаюсь вставить вектор FireSpells в вектор типа векторных заклинаний, однако он не вставляется.Есть ли способ сделать так, чтобы он вставлялся?
Я пробовал push_back на FireSpell в вектор заклинаний, и он работает нормально, однако, он всегда возвращает ошибку, когда я push_back вектор FireSpell в вектортипа вектор Заклинание.
Magic.h
struct Fire
{
int damage;
int dps;
};
struct Spell
{
int cost;
string name;
};
struct FireSpell : Spell, Fire
{
};
Magic.cpp
#include <iostream>
#include "MagicSys.h"
#include <vector>
#include <string>
#include "Magic.h"
using std::cout;
using std::vector;
FireSpell burn;
FireSpell inferno;
FireSpell volcano;
int mainfunc()
{
vector<vector<Spell>> PlayerSpells;
vector<FireSpell> PlayerFSpells;
PlayerFSpells.push_back(burn);
PlayerFSpells.push_back(inferno);
PlayerFSpells.push_back(volcano);
/*Trying to insert FireSpell Vector into the end of the vector of Spell vectors*/
PlayerSpells.push_back(PlayerFSpells);
vector<vector<Spell>>::iterator it;
for (it = PlayerSpells.begin(); it!=PlayerSpells.end(); ++it)
cout << &it << " ";
return 0;
}
Я ожидал, что внутренний вектор FireSpell будет вставлен во внешний вектор Spell на линии: PlayerSpells.push_back(PlayerFSpells);
однако, это выдает мне сообщение об ошибке:
no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back
[with _Ty=std::vector<Spell, std::allocator<Spell>>,
_Alloc=std::allocator<std::vector<Spell, std::allocator<Spell>>>]"
matches the argument list