operator演算子について – 固定ページ 3 – プログラミング – Home

通知
すべてクリア

[解決済] operator演算子について

固定ページ 3 / 3

たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

template<typename E, typename T>
basic_string<E, T> convert(basic_ostream<E, T> &os, const string &str) {
basic_string<E, T> buf;
for (unsigned int i = 0; i < str.size(); i++)
buf.push_back(os.widen(str[i]));
return buf;
}

class Hoge {
int x_;
int y_;
public:
Hoge(int x, int y) : x_(x), y_(y) {}

template<typename E, typename T> friend
basic_ostream<E, T>& operator<<(basic_ostream<E, T> &os, const Hoge &hoge) {
os << convert(os, X座標:)
<< hoge.x_
<< convert(os, , Y座標:)
<< hoge.y_;
return os;
}
};

これでどうでしょ?
convertは、もっと良い名前にして他のクラスでも使えるし、我慢の範囲内かなーと。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

うーん...たとえば漢を二度にわけて(charふたつ)widenしてるわけで、
これでちゃんとwideになるのか、がヒジョーに気になります。
# うまくいったとしても、endianとか絡んでこないかな?


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

先ほどのコードはマルチバイトでもユニコードでも、失敗しませんでしたが、
そう考えてみると、ちゃんとwideになる方が不思議な気もしますね。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> 皆さんテンプレートで盛り上がっていますが、やはりレベルが高すぎて
> 意味不明です。参考にさせてもらいます。

乗っ取り申し訳ないです。私の程度などは見ての通り、
このスレの他の回答者に全然かなわないのですが、
お詫びを兼ね、かなわないなりに追加。

> 皆さんはどこで知識を得たのですか!?一番の疑問です。

CとC++とMFCとWinAPIの混沌の中で、周囲に聞く人もない中でもがきました。
それ以前にもプログラミングの経験はありましたが、上述の言語等は初めて。

C++だけでも書籍・サイト共に色々参考にしましたが、
お薦めのサイトは「ロベールのC++教室」です。
http://www7b.biglobe.ne.jp/~robe/cpphtml/index.html

書籍では先ほどから机の上に「C++の設計と進化」がのっています。
中盤以降は部分的にしか読めていないのですが。
http://www.amazon.co.jp/dp/4797328541


返信引用
固定ページ 3 / 3

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました