0からの、超初心者C++相談室

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2018/11/12(月) 14:55:13.35ID:Tf74ZWQr
何にも知らない0からの出発、超初心者のためのC++相談室
2025/04/28(月) 10:00:18.82ID:+jC2JIL+
匿名クラスってCで言う構造体やん
2025/04/28(月) 10:12:11.66ID:RRBAM2hD
>>986
newの後にクラス定義は書けない
匿名インラインでなんちゃらしたい場合はラムダを使う
2025/04/28(月) 12:35:00.60ID:clGXfLYj
>>986
簡潔な回答としては「できない」ということになる。
関数ひとつで終わるような簡単なコールバックならラムダ式で渡せるように設計する。
もう少し複雑なものになると……式の中に定義を書けるのは見通しが悪いし、出来てしまう Java のほうが良くなさそう。
別の場所 (といっても直前で良いけれど) で定義すれば何も困らないよ。

質問の本筋ではないが気になる点として、
new で生成したものはどこかで delete しなきゃならないからそのコードだけから判断できる範囲ではなんだか筋が悪そうに見える。
つまりそもそも new する意味がないんじゃない? と思う。
2025/04/28(月) 13:12:28.38ID:PR6E6U1X
>>988 >>989 なるほど、ありがとうございます 

>>989
>別の場所 (といっても直前で良いけれど) で定義すれば何も困らないよ。
はい、それで行ってみようかとおもいます

>new で生成したものはどこかで delete しなきゃならないから
はい、そういうわけでshared_ptrで... そのためにも型の名前はあった方がいいですね

諸般の事情でJavaとC++のコードを間接的に共有しようとしていまして、
ならばコードのスタイルもできるだけ似せようかなと、思ったのでした
2025/05/02(金) 09:24:43.58ID:k5bGwZZ0
size_t を返す hoge.count() みたいなのがあって
for(int i = hoge.count(); --i >= 0){...} と描くと
型が違うって怒られるのですが
for(int i = (int)hoge.count(); --i >= 0){...}
for(unsigned long i = (unsigned long)hoge.count(); --i >= 0){...}
for(size_t i = hoge.count(); --i >= 0){...}
どれが正解?
2025/05/02(金) 09:54:10.74ID:LUc36ySD
>>991
どこでどのように型が合わないのか説明して。
2025/05/02(金) 11:40:02.44ID:n0wyIh3y
>>991
for 文の括弧の中はセミコロンで区切られた三つの節を持つ形式である必要があるが、二つの節しかないのが根本的な間違い。

そんでそれを脇に置くとして、ループカウンタ i が unsigned であるときに --i >= 0 という式で判定しようとするのが間違い。
0 以下になることはありえないのだから判定の意味がない。 (無限ループを意図したのでない限りは。)

整数を別の整数型に型変換したときに型変換後の型で表現可能な範囲の値であるならば同じ数値のままであることは保証されて何も問題はない。
逆に言えば扱う値の範囲次第では違う数値に変わったり未定義になったりすることがある。
hoge.count() が返す型が size_t なら最後まで size_t で扱うのが基本的には好ましい。
値が取りうる範囲を把握しているなら問題を起こさない範囲で適切に型変換するのはプログラマの裁量による。
状況によって判断するしかない。
2025/05/02(金) 12:05:12.81ID:b7t9YOim
我慢できなくなって説明しちゃうはちみつさん
2025/05/02(金) 19:42:35.68ID:rPO248eK
for(long long i = (long long)hoge.count(); --i >= 0; ){...}
2025/05/04(日) 09:19:50.28ID:RkNPiBO2
Rust使えばもっと楽になるかと思いきや
面倒が増えただけだったでござる
2025/05/04(日) 10:01:55.29ID:CPTw2I9A
>size_t を返す hoge.count() みたいなのがあって
>for(int i = hoge.count(); --i >= 0){...}

Rustなら単に (0..hoge.count()).rev()
2025/05/04(日) 11:51:46.75ID:w7r9Yiaa
全体としては Rust のほうがだいぶん楽だと思うけどなぁ。
好みや慣れの要素があるから単純には比較できないのだけれど。
2025/05/04(日) 11:59:34.01ID:RkNPiBO2
はちみつさんもRust使ってるんだね
1000デフォルトの名無しさん
垢版 |
2025/05/04(日) 11:59:44.18ID:RkNPiBO2
かわいい
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2364日 21時間 4分 32秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況