2016-10-01 2 views
-1

Supposons que j'ai une classe Crate, et il a deux membres, width et height. Supposons maintenant que je veux la ligne std::cout << myCrate << '\n'; imprimer ceci:Une classe définie par l'utilisateur peut-elle avoir un comportement personnalisé avec std :: cout <<?

#---# 
| | 
| | 
#---# 

si myCrate a width = 5 et height = 4. Différents width s et height devraient donner des tailles de caisse différentes. Puis-je définir ce comportement, par ex. en surchargeant l'opérateur <<? Comment ferais-je cela?

Gardez à l'esprit que ceci est un exemple générique et non spécifique à la classe ci-dessus Crate.

+1

Grâce à une surcharge du '' << opérateur. – LogicStuff

+0

Je voudrais des instructions plus spécifiques. – Johan

+1

Vous trouverez des instructions plus spécifiques dans le livre que vous apprenez en C++. stackoverflow.com n'est pas un service d'écriture de code. –

Répondre

2

Oui, vous pouvez le faire par une surcharge operator<< comme indiqué ci-dessous. En déclarant la fonction comme friend de Crate, il aura accès à tous les membres de données privées, vous permettant de représenter les données comme bon vous semble.

Crate.hpp

class Crate { 
    ... 
    friend std::ostream& operator<< (std::ostream& os, const Crate& c); 
    ... 
} 

Crate.cpp

std::ostream& operator<< (std::ostream& os, const Crate& c) { 
    os << "whatever you want to print" 

    return os; 
}