C++ 与‘不匹配;操作员<<’;尝试打印矢量元素时

C++ 与‘不匹配;操作员<<’;尝试打印矢量元素时,c++,vector,C++,Vector,我正在制作一款名为Magick的基于文本的冒险游戏。 在这个游戏中,我有一个名为damageSpell的类,看起来像这样 class damageSpell { public: int damage; SubClasses type; int manaCost; std::string spellDescription; }; 我用这个类作为向量的类型 std::向量伤害法术 后来,我尝试使用向量上的insert函数,

我正在制作一款名为Magick的基于文本的冒险游戏。
在这个游戏中,我有一个名为
damageSpell
的类,看起来像这样

class damageSpell { 
    public:
        int damage;
        SubClasses type;
        int manaCost;
        std::string spellDescription; 
};
我用这个类作为向量的类型

std::向量伤害法术

后来,我尝试使用向量上的
insert
函数,将一个元素添加到我的
damageSpells
向量中

damageSpell fireball;

user.damageSpells.insert(user.damageSpells.begin(), 0, fireball);
然后试图打印出来


std::cout您所做的是打印整个对象,但是
user.damageSpells[0]
是类
法术伤害的一个实例。你的编译器根本不知道如何打印它。您必须定义一个将在
上调用的函数,该函数将提供信息,特别是选定答案中关于“位移位运算符”的部分。使用
输出您认为将某些内容放入向量会使其无法打印吗?也许忘了向量,试着打印一个
damageSpell
对象?好吧,我开始了解这个,我明白,因为这是我创建的一个类,我必须创建我自己的操作符,但一旦创建了…我如何访问它?完成后,我将使用什么代码来使用新代码operator@Alice每次使用
ok..get时都会调用您的操作员。那么,上面的函数里面会有什么代码呢?爱丽丝:我不能直接回答这个问题,因为我不知道你想如何打印你的类。只需将
stream
参数用作
std::cout
,然后定义打印拼写的方式。例如,如果你想打印伤害、魔法成本和描述,全部用逗号分隔,使用
stream好的,按照你说的做,看起来我完全理解……但是。。。使用我的新操作符的语法是什么。它会是类似于std::ostream的东西吗
std::ostream& operator<<(std::ostream& stream, const damageSpell& damageSpellToPrint)
{
    // Your code here
}
std::cout << user.damageSpells[0];