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