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