myclass
est une classe C++ écrite par moi et quand j'écris :
myclass x;
cout << x;
Comment puis-je produire 10
ou 20.2
comme un integer
ou un float
valeur ?
myclass
est une classe C++ écrite par moi et quand j'écris :
myclass x;
cout << x;
Comment puis-je produire 10
ou 20.2
comme un integer
ou un float
valeur ?
Vous devez surcharger le <<
opérateur,
std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
os << obj.somevalue;
return os;
}
Alors quand vous le faites cout << x
(donde x
est de type myclass
dans votre cas), il produira ce que vous lui avez demandé dans la méthode. Dans le cas de l'exemple ci-dessus, il s'agirait de la méthode x.somevalue
membre.
Si le type du membre ne peut pas être ajouté directement à un membre de l'Union européenne, il est possible d'ajouter un membre de l'Union européenne. ostream
vous devrez alors surcharger la fonction <<
pour ce type également, en utilisant la même méthode que ci-dessus.
Même si les autres réponses fournissent un code correct, il est également recommandé d'utiliser une fonction amie cachée pour implémenter la fonction operator<<
. Les fonctions amies cachées ont une portée plus limitée, ce qui permet une compilation plus rapide. Comme il y a moins de surcharges qui encombrent l'espace de nom, le compilateur a moins de recherches à faire.
struct myclass {
int i;
friend auto operator<<(std::ostream& os, myclass const& m) -> std::ostream& {
return os << m.i;
}
};
int main() {
auto const x = myclass{10};
std::cout << x;
return 0;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.