• ベストアンサー

ポインタの入出力演算子?[C++]

入出力演算子を使ったコードを書いているのですが わからないところがあるので教えてください。 friend std::ostream& operator <<( std::ostream& out, const Box can ); friend std::istream& operator >>( std::istream& in, Box & can ); friend std::ostream& operator <<( std::ostream& out, const Box * can ); friend std::istream& operator >>( std::istream& ins, Box * & can ); このうち上の二つの普通の演算子はちゃんと動いている のですが、下の二つはどのようにすればいいのかわかりません。 下のコードのようにポインタを使って入出力したいんですが・・・ Box * ptrCan = NULL; cout << ptrCan; ptrCan = &t; cout << ptrCan; cin >> ptrCan; cout << ptrCan;

質問者が選んだベストアンサー

  • ベストアンサー
  • qa_goo
  • ベストアンサー率60% (6/10)
回答No.2

VC6 で確認したところ、 Box クラスに上記の4つの friend を定義すれば Box * ptrCan = NULL; cout << ptrCan; <-------- 3番目が呼び出される Box t; ptrCan = &t; cout << ptrCan; <-------- 3番目が呼び出される cin >> ptrCan; <--------- 4番目が呼び出される cout << ptrCan; <-------- 3番目が呼び出される と、普通に呼び出されますよ。 最初の NULL にアクセスさせる意味は よく分かりませんが(^^;。

azex
質問者

お礼

ご返答&チェックありがとうございます! ただ、NULLを避けて入出力できるようにするだけなの ですが説明不足ですみませんです、、

その他の回答 (1)

回答No.1

> Box * ptrCan = NULL; > cout << ptrCan; どんな挙動をさせたいのですか? > friend std::istream& operator >>( std::istream& ins, Box * & can ); どんな挙動をさせたいのですか? ポインタが参照体なのはなぜですか?

azex
質問者

お礼

返事が遅くなってすみません。 自己解決したので締め切らせてもらいます。 ちなみに上のはptrCan = NULLだったらエラー メッセージを表示というシンプルなものでした。 説明が足りなかったですね^^;

関連するQ&A