2016-10-01 4 views
-1

クラスCrateがあり、それにはwidthheightという2つのメンバーがあるとします。 myCratewidth = 5height = 4を持っている場合ユーザー定義のクラスは、std :: cout <<でカスタム動作を持つことができますか?

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

:今、私はラインstd::cout << myCrate << '\n';がこれを印刷するとします。異なるwidthおよびheightは、異なる箱サイズになるはずです。この動作を定義できますか? <<演算子のオーバーロードによってこれをどうやってやりますか?

これは一般的な例であり、上記のCrateクラスに固有ではないことに注意してください。

+1

。 – LogicStuff

+0

具体的な指示が必要です。 – Johan

+1

C++を学習している本で、より具体的な手順を見つけることができます。 stackoverflow.comはコード作成サービスではありません。 –

答えて

2

はい、次のようにoperator<<をオーバーロードすることで可能です。この関数をCrateというfriendとして宣言することで、すべてのプライベートデータメンバーにアクセスできるようになります。これにより、データが適切に表現されます。 `` <<演算子をオーバーロードを通じて

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; 
} 
関連する問題