私はMagickと呼ばれるテキストベースのアドベンチャーゲームを作っています。
このゲームでは、damageSpell
次のようなラベルの付いたクラスがあります
class damageSpell {
public:
int damage;
SubClasses type;
int manaCost;
std::string spellDescription;
};
私はこのクラスをそのようなベクトルの型として使用しました
std::vector<damageSpell> damageSpells
後で、damageSpells
vectorのinsert
関数を使用して、ベクトルに要素を追加しようとしました。
damageSpell fireball;
user.damageSpells.insert(user.damageSpells.begin(), 0, fireball);
それからそれを印刷しようとしました
std::cout << user.damageSpells[0];
これを行うと、私はこのエラーを受け取りました
magick1.cpp:252:15:エラー: 'operator <<'に一致しません(オペランドタイプは 'std :: ostream {aka std :: basic_ostream}'および 'damageSpell'です)
私はC ++を初めて使用しますが、これが何を意味するのか、どのように修正すればよいのかわかりません。すべての助けをいただければ幸いです。
user.damageSpells[0]
クラスのインスタンスですspellDamage
。そして、あなたのコンパイラはそれをどのように印刷するかについて何の考えも持っていません。<<
演算子で呼び出されて出力される関数を定義する必要があります。
この演算子のオーバーロードは、次のように定義できます。
std::ostream& operator<<(std::ostream& stream, const damageSpell& damageSpellToPrint)
{
// Your code here
}
(like )とクラスのインスタンスの<<
間で演算子を使用するたびに呼び出されます。たとえば、次のコードは、直接渡し、あなたのオペレータの関数を呼び出しますようパラメータととしてパラメータ:std::ostream
std::cout
std::cout
stream
user.damageSpells[0]
damageSpellToPrint
std::cout << user.damageSpells[0];
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加