<<演算子のオーバーロードを行いたい
<<演算子をオーバーロードを行うときにメンバ変数にアクセスする際にエラーがでてprivateだからと理解することはできましたが<<演算子のオーバーロードについて調べているときに同様な定義の仕方で実装できていたのでどこに違いがあるのかが知りたいです
### エラーコード
nume : declared private here
int frac::nume is private within this context
deno : declared private here
int frac::deno is private within this context
エラーが出たコード
c++
1#include<iostream> 2using namespace std; 3 4 5class frac{ 6 7 int nume; //分子 8 int deno; //分母 9 10 public: 11 function(){} 12 13}; 14 15//<<オーバーロード 16 ostream& operator << (ostream& os, const frac& ob ){ 17 if (ob.deno == 0 ){ 18 os << "This is wrong number !!" ; 19 }else 20 if(ob.deno == 1){ 21 os << ob.nume ; 22 }else{ 23 os << ob.nume << "/" << ob.deno ; 24 } 25 } 26 27 28 29
###成功している例
c++
1// overload_date.cpp 2// compile with: /EHsc 3#include <iostream> 4using namespace std; 5 6class Date 7{ 8 int mo, da, yr; 9public: 10 Date(int m, int d, int y) 11 { 12 mo = m; da = d; yr = y; 13 } 14 friend ostream& operator<<(ostream& os, const Date& dt); 15}; 16 17ostream& operator<<(ostream& os, const Date& dt) 18{ 19 os << dt.mo << '/' << dt.da << '/' << dt.yr; 20 return os; 21} 22 23int main() 24{ 25 Date dt(5, 6, 92); 26 cout << dt; 27}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/29 02:33