09/11/21 09:58:59
>>980
こことか見てた
Programing Place
URLリンク(www.geocities.jp)
982:デフォルトの名無しさん
09/11/21 12:57:09
ロベールの翻訳は分かりやすい
983:デフォルトの名無しさん
09/11/21 13:17:19
>>982
どこが翻訳なんですか?
984:デフォルトの名無しさん
09/11/21 16:38:20
自作クラスをcoutで出力するにはどうすれば良いですか?
985:デフォルトの名無しさん
09/11/21 16:41:43
ここみたら無理そうなことがわかりました
諦めました
URLリンク(www.jah.ne.jp)
986:デフォルトの名無しさん
09/11/21 17:00:01
そのページに書いてあるのは標準ストリームクラスの拡張であって、
君がやりたいのは標準ストリームクラスで自作クラスを出力することでしょ?
まったくの別件だと思うよ。
君が勉強すべきなのは、演算子オーバーロード。
987:デフォルトの名無しさん
09/11/21 17:06:21
サンクス!です
988:デフォルトの名無しさん
09/11/21 17:27:13
これで出来ることはわかりましたが、char*からsize分だけ渡すにはどうすればいいですか。
std::ostream& operator<<(std::ostream& os, const ustring& x) {
return (os<<*****): }
989:デフォルトの名無しさん
09/11/21 18:15:23
>>983
多くのプログラミング書籍が洋書からの翻訳であることを揶揄したジョークだろう
よく書かれるコピペみたいなものだ
990:デフォルトの名無しさん
09/11/21 18:22:42
>>988
C/C++言語の仕様で\0まで出力だと思うので、任意の場所に\0を突っ込んでやればいいと思うよ。
バッファのオーバーランやアンダーランに気をつけて。
991:デフォルトの名無しさん
09/11/21 18:30:02
\0があっても標準出力へ渡したいんです… ustringはchar*とintのペアです。
STLは使えません。
あと、別の質問があるのですが。
クラスのメンバ関数で、
char* & operator [] ( int n ) { return &(ch[n]); } だとエラーになります。
char* & operator [] ( int n ) { static char*p=&(ch[n]); return p; } だと通るのですが
同時にアクセス来た場合に困ります。
衝突しない参照渡しはどうやればいいですか。STL stringみてもよくわかりません。
992:デフォルトの名無しさん
09/11/21 18:39:11
>>991
変数でもないものの参照を返したいとか訳分からん
値を返すんだと不都合なの?
993:デフォルトの名無しさん
09/11/21 18:39:28
>991
やりたい事は本当に operator[] で char* & を返す事なのか?
ch って char* なんだよな?
string と名のつく型で operator[] だったら普通 char& が返ると思うんだが。
994:デフォルトの名無しさん
09/11/21 18:43:27
値で返すと
memcpy(buf, &str[0], size);
が実行できないんです。
error メモリ上に配置されなければならない
がでます。
static char*の参照返しだと出ません。
995:デフォルトの名無しさん
09/11/21 18:44:35
わかりました。間違えてました。>>993さんのご指摘通り間違えしてました。
996:デフォルトの名無しさん
09/11/21 19:05:39
>>988 たのみます
char* , intが与えられたときに標準出力( << )に\0を含む文字列を出力したいです。
997:デフォルトの名無しさん
09/11/21 19:31:43
>>996
その前に、どういうインタフェースにしたいのか考えれ。
operator<< をオーバーロードすると
cout << yourclass << endl;
のような書き方ができるわけだが、
char*とintの二つのパラメータを与えるなら
そういう書き方はできなくなる。
それとも const char * operator()( int ) みたいなメンバを持たせて
cout << yourclass( 文字数 ) << endl;
とかけるようにでもするかい^^
998:デフォルトの名無しさん
09/11/21 19:37:28
stringは、string(ch, size)で、\0を含む文字列を
cout<<に渡せるじゃないですか。
この実装はどうやってるのかわかりたいです。
999:デフォルトの名無しさん
09/11/21 19:45:50
templateクラスのメソッドってnewしたら使われてなくても全部実体化しちゃう?
1000:デフォルトの名無しさん
09/11/21 20:03:01
>>998
コンストラクタの話とoperator<<の話がごっちゃになってるじゃないか^^
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。