myclass
est une classe C++ écrite par moi et quand j'écris:
myclass x;
cout << x;
Comment puis-je sortir 10
ou 20.2
, comme une valeur integer
ou float
?
En général, en surchargeant operator<<
pour votre classe:
struct myclass {
int i;
};
std::ostream &operator<<(std::ostream &os, myclass const &m) {
return os << m.i;
}
int main() {
myclass x(10);
std::cout << x;
return 0;
}
Vous devez surcharger le <<
opérateur,
std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
os << obj.somevalue;
return os;
}
Ensuite, quand vous faites cout << x
(où x
est de type myclass
dans votre cas), il affichera tout ce que vous lui avez dit dans la méthode. Dans le cas de l'exemple ci-dessus, ce serait le x.somevalue
membre.
Si le type du membre ne peut pas être ajouté directement à un ostream
, vous devrez alors surcharger le <<
opérateur pour ce type également, en utilisant la même méthode que ci-dessus.
c'est très simple, implémentez simplement:
std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
os << foo.var;
return os;
}
Vous devez renvoyer une référence à os afin de chaîner la sortie (cout << foo << 42 << endl)
Alternative:
struct myclass {
int i;
inline operator int() const
{
return i;
}
};