les opérateurs, c'est assez simple, à la base.
Pour toute expression a # b, soit il existe une fonction operator#(A a, B b), soit ca ne compile pas.
Pour les types de bases, tout se passe comme si c'était vrai
Pour les classes, c'est à toi de les fournir.
Dans le cas de les opérateurs de manipulation de flux, il y a (plus ou moins) par défaut les operateurs pour les types primitifs (entiers, pointeurs) et std::string.
Pour toutes tes classes, c'est à toi de définir.
Souvent les classes ont une méthode publique "tostring() const", "operator std::string() const", "print() const", "serialize() const", et l'operateur se contente de l'appeler.
Est-ce que la déclaration de ton afficheinfo est bien:
std::string enemy::afficherinfo() const
Partager