08/02/04 22:40:27
intへの暗黙のキャストが許せるなら、それでもいい。
982:デフォルトの名無しさん
08/02/04 22:54:31
>>980
訳わかんねえことがいっぱい起こるから、やめといた方がいい。
983:デフォルトの名無しさん
08/02/04 23:00:47
0xではこの辺の暗黙的型変換を禁止できるようになるんだよな、たしか。
984:975
08/02/04 23:19:06
変換関数を定義しておけば良いんですね。
そういうものがあるというのは読んだんですが用途まで考えていませんでした…。
>>980の方法で良さそうです。
>>979のoperator void*でも上手くいきましたが
条件式の中身はboolにキャストされると思っていたんですが、
void*でも動くのはどういう意味なのか教えてもらえないでしょうか。
985:975
08/02/04 23:23:45
すみません、>>981以降リロードしてませんでした…。
986:デフォルトの名無しさん
08/02/04 23:26:16
if( x )はif( x!=0 )と等価、というか。
void *m = malloc(len);
if( m ) { return m; } else { abort(); }
みたいな処理ってやったことないの?
987:デフォルトの名無しさん
08/02/04 23:27:42
>>984
982でも書いたが、operator boolのオーバーロードはやめとけ。
ClassA a, b;
int c = a + b;
int d = abs(a);
みたいのがコンパイル通っちまう。
>>979 が常道。
988:975
08/02/05 00:02:09
わかってきました。
条件式に入るクラスは数値かポインタへの変換を持っていれば良くて、
operator void*を定義しておけばそちらに変換されると。
でintからboolよりもintからポインタの方が予期せぬ動作が少ないのでvoid*を使うべきと。
知識が足りてなくてレス読みつつググったりして勉強になりました。
どうもありがとうございました。
989:デフォルトの名無しさん
08/02/05 00:03:21
>>984
ポインタはboolへの暗黙の変換がある。
cinもそれを利用してif(cin)を可能にしている。
その方法が>>979の方式だ。
boolへの暗黙の変換はおすすめできない。
990:デフォルトの名無しさん
08/02/05 00:03:40
>>987
bool 値として使用したいのならそんなもんじゃね?
そうでないならそもそも演算子オーバーロードで解決すべきじゃないと思う。
991:デフォルトの名無しさん
08/02/05 00:23:35
boostは徹底してて、関数ポインタとか返してくるし(w
992:デフォルトの名無しさん
08/02/05 00:31:24
int a = 123;
bool b = !!a;
993:デフォルトの名無しさん
08/02/05 00:33:44
>>991
すごー。でもそのくらいの方が有り難い。
まえに operator bool()を定義してて、コンパイラがブッ壊れたかと思った。
994:デフォルトの名無しさん
08/02/05 00:44:42
>>991
つまり、関数呼べちゃうってことか?
メンバポインタとかの方が良くね?
995:デフォルトの名無しさん
08/02/05 00:48:01
・ ・ ・ ・ ・ ・ ・ ・
メンバ関数ポインタだぜ?
そうそう呼べはしないとおもうが。
996:デフォルトの名無しさん
08/02/05 00:49:29
なんだ。メンバ関数ポインタか。
ならいいが。
997:デフォルトの名無しさん
08/02/05 01:19:14
【初心者歓迎】C/C++室 Ver.48【環境依存OK】
スレリンク(tech板)
998:デフォルトの名無しさん
08/02/05 01:20:11
【初心者歓迎】C/C++室 Ver.48【環境依存OK】
スレリンク(tech板)
999:デフォルトの名無しさん
08/02/05 01:22:10
さーて来週のスレは?
1000:デフォルトの名無しさん
08/02/05 01:24:41
お疲れ様でした。次週も環境依存コードをお楽しみください。
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。