C++相談室 part154

■ このスレッドは過去ログ倉庫に格納されています
2021/01/08(金) 17:54:00.55ID:0DW9z0rL
※前スレ
C++相談室 part153
https://mevius.5ch.net/test/read.cgi/tech/1602339500/

テンプレここまで
2021/01/23(土) 18:58:05.34ID:C4WlxIYr
>>198
そんなクソみたいなこと言うんだったら、まず「関数型言語」の定義から言えよ。
Lispが関数型言語じゃないとか言い始めそうだな。
204デフォルトの名無しさん
垢版 |
2021/01/24(日) 11:36:54.35ID:wSlEv8S7
Rubyは関数型ωωω
2021/01/24(日) 12:17:53.22ID:/MPXRGah
カオスコードって意味ならc++とperlが双璧だわな。rubyは別の意味で糞だが。
2021/01/24(日) 14:46:51.42ID:bXJjYU1w
rubyの糞とrailsの糞がかけ合わさって悪臭漂う糞になる
207デフォルトの名無しさん
垢版 |
2021/01/24(日) 21:13:47.08ID:hPeuQsPP
肛門を保護するために出る粘液はイイ匂いがするので、化学的に類似品が合成され、香水の原料になっています。
ウンコは臭いですが、ウンコの周りには良いものがあるかもしれない。
2021/01/24(日) 23:17:47.88ID:bXJjYU1w
Co-mon++
2021/01/25(月) 00:51:35.02ID:h/LmkNzq
>>207
腸液は質感、匂いともに精液に酷似してるっていうのはよく言われてるけど、それのことじゃないよね?
良い匂いの分泌液なんて聞いたことがない
2021/01/25(月) 09:53:48.54ID:RU5Fvovq
やだこのスレホモ臭い
211デフォルトの名無しさん
垢版 |
2021/01/25(月) 10:13:42.80ID:uSgkqdKl
と言いつつ嬉しそうな吉宗であった。
212デフォルトの名無しさん
垢版 |
2021/01/25(月) 13:06:55.63ID:sPc2eBUP
PerlとC++は、見づらいソースコードに慣れる能力を鍛えてくれる。
Perlをオワコン扱いする人は情弱である。
2021/01/25(月) 13:11:37.73ID:54hHF458
厄介者のperl厨
2021/01/25(月) 13:34:11.10ID:lM5Uli0g
糞コードに触れるとアンチパターンがわかるというのは確かにあるが、それを人に勧めるのは気がひける。
215デフォルトの名無しさん
垢版 |
2021/01/25(月) 13:48:32.46ID:sPc2eBUP
まずい酒の味を知らない者には、うまい酒の味を見分けることはできない。
2021/01/25(月) 21:12:20.67ID:bQwFUjl3
美味い酒の味を知ったら不味い酒は飲めん
2021/01/25(月) 22:13:56.33ID:IR169uBT
酒は飲まんからようわからん
218デフォルトの名無しさん
垢版 |
2021/01/25(月) 22:56:10.85ID:sPc2eBUP
まずい酒を飲めなくなることは、プログラミングに置きかえればクソコードのメンテナンスができなくなることを意味しており、スキル低下でしかない。
2021/01/25(月) 23:11:18.97ID:bBvI6B4m
まずい酒はわかるけどうまい酒はマジわからん…
220デフォルトの名無しさん
垢版 |
2021/01/25(月) 23:57:21.75ID:sPc2eBUP
うまい酒については「水のように飲みやすい」というほめ表現もあるが、なら水飲んどけよという話でもある。
2021/01/25(月) 23:57:36.36ID:t4dFVxvz
<body>
!unti {nuritakuri}
<body/>
2021/01/26(火) 00:02:06.39ID:Qnn6Y+tc
<head>
<bukkake> seisi <bukkake/>
<strong> naaaaaaaaa!!!<strong/>
<head/>
2021/01/26(火) 02:05:34.14ID:wg8lZWjJ
>>220
ほんまこれ
前にカエルの肉を食ったやつが「ほんと鶏肉とおんなじようなもんだから!食べてみて!」
ってしつこいんだが、だったら鶏肉でいいだろなんでわざわざゲテモノ食わにゃならんのか??となる
224デフォルトの名無しさん
垢版 |
2021/01/26(火) 03:51:19.13ID:uiGtA95I
寄生虫が良い風味出すから。
225デフォルトの名無しさん
垢版 |
2021/01/26(火) 06:09:38.08ID:ZRZozNwf
macOSのHomebrewいいね。Perlが最新の5.32.1に即対応。人柱上等なところに惚れる。
2021/01/26(火) 07:49:52.25ID:ZI8ZD6Xl
安めの食材や有り合わせでうまいもん作れる腕があっても
腐ったものはどうにもできない

例えるなら、これだろ
2021/01/26(火) 07:59:37.62ID:xVPuSdRM
>>220
酔える水なら。
2021/01/26(火) 11:52:17.15ID:XuLptVzr
>>223
今ジビエなどとおしゃれに言ってるがゲテモノ食いが今の事態を招いてる

中途半端な科学信仰が何もかも迷信にしてしまって自然を正しく畏れなくなった
229デフォルトの名無しさん
垢版 |
2021/01/26(火) 13:45:24.16ID:uiGtA95I
ちょっと腐ったほうが柔らかくなってアミノ酸も多いよ。
熟成させたと言えばグルメも安心だし。
230デフォルトの名無しさん
垢版 |
2021/01/26(火) 13:48:13.24ID:uiGtA95I
野菜は立てておくと腐らないんだけど、その代わり成長するからね。
光合成できるかも?と思ってなけなしの養分使って葉を伸ばすんだろうけど、光合成は出来ません。
231デフォルトの名無しさん
垢版 |
2021/01/26(火) 13:54:11.58ID:uiGtA95I
野菜の活〆を発明したら儲かるだろな。
放射線以外で。
2021/01/26(火) 21:06:31.25ID:Du8Hqhh0
いいかげんスレ違い。
233デフォルトの名無しさん
垢版 |
2021/01/26(火) 21:46:24.92ID:ZRZozNwf
プリプロセッサマクロだらけの“汚い”コードを否定したらC/C++の強みを失うことになる。
JavaやC#はプリプロセッサマクロが貧弱なのが玉にキズだ。
2021/01/26(火) 21:51:10.66ID:ZRZozNwf
pybind11スレがないこんな世の中じゃ〜Python〜
まぁマクロの塊のような代物だが。
2021/01/27(水) 06:03:44.65ID:yQalyIAE
C++はコミュニティで発言力のある人が大抵率直にものを言い過ぎる、悪く言えば口が悪いので忌み嫌われてるとこある
2021/01/27(水) 07:30:48.85ID:eLUquqZ0
>>229
カダベリンやムスカリンが発生してたり
セレウス菌が大量にいるのは
そういう問題じゃねえぜ
237デフォルトの名無しさん
垢版 |
2021/01/27(水) 07:48:28.28ID:4l9V085Z
でも、Linux板なんか失敗したボランティアの住所載せて、放火しろとは言ってませんよ??言ってませんよ??・・・などの書き込みあるからな。
それに比べれはだいぶ良識的では?
238デフォルトの名無しさん
垢版 |
2021/01/27(水) 11:26:52.94ID:cJSBZXf9
C/C++のプリプロセッサも貧弱すぎ
239デフォルトの名無しさん
垢版 |
2021/01/27(水) 17:43:27.13ID:nPuTGnvU
C++例外のスタック情報がとれないのはC++の欠点。
例外でスタック情報を使えるJava/C#/Python/Perlはエライ。
2021/01/27(水) 21:51:38.91ID:NT655YPf
おまえは二度とC++使うな
2021/01/27(水) 23:04:53.57ID:TqcnYSNG
>>239
スタックフレーム作ればイケるってば
2021/01/28(木) 09:07:27.76ID:dmDIUcy2
>>235
例えば誰?
2021/01/28(木) 10:23:46.51ID:vBYpvnJx
>>239
gdb にアタッチしたことないんか?

C++23 には stacktrace が入るから
デバッガを使いこなせなくても少し楽にトレースできるかもな。
244デフォルトの名無しさん
垢版 |
2021/01/28(木) 10:52:39.05ID:dNWrUHbO
>>223
フグは豚肉に触感似てるけどフグの方が美味い
245デフォルトの名無しさん
垢版 |
2021/01/28(木) 10:54:00.53ID:dNWrUHbO
>>228
日本で感染爆発が起きてないのは以前からジビエが流行してたからか
246デフォルトの名無しさん
垢版 |
2021/01/28(木) 10:55:14.42ID:dNWrUHbO
>>230-231
白菜は外の皮じゃなくて中の芯から先に食べろと言われている
2021/01/28(木) 11:40:01.79ID:eLxqvNeX
>>200
ユニコ時代だからAPLよりずっと先行ってるぞ
組み込み演算子で∩∉とか集合論の記号採用してたりアトミックな演算子は⚛++とか洒落効いてたりする
一方で古代perlのプレフィックスは緩和されてる
2021/01/28(木) 11:51:37.25ID:eLxqvNeX
∅∘∩ ⊍∪ ⊖ ⊎ ∖≅ ∈ ∉ ∋ ∌ ≡
≢ ⊂ ⊄ ⊃ ⊅ ⊆ ⊈ ⊇ ⊉ ≼ ≽.«»≠␤
他組み込みではこんな感じか
>= やらよりmずっと可読性高いと思う、エディタもvimとか高機能なのなら問題なかろう
␤文字を表示してくれるのは特に便利
2021/01/28(木) 11:58:59.45ID:kskG1wa2
>>245
さすがにコウモリはどこの地方でも食わんだろ
2021/01/28(木) 17:23:15.04ID:8Al9oSyF
なんでプリミティブ型って継承できんの?
2021/01/28(木) 17:29:22.44ID:vBYpvnJx
>>250
やりたいときってあるか?
2021/01/28(木) 17:41:41.73ID:GsoT0xyU
クラスAのオブジェクトをクラスBのメンバにするときってどうやってAのコンストラクタ呼ぶの?

class B{
 A a;

public:
 B(){
  // この辺でAのコンストラクタを呼びたい
 }
};
2021/01/28(木) 17:48:00.82ID:WrE+/6so
>>252
メンバのコンストラクタの方が先に呼ばれる。だからそこでは既にAは構築済み。
どうしてもBのコンストラクタ内でAのコンストラクタ呼びたいなら、メンバ変数はポインタで持つ
254デフォルトの名無しさん
垢版 |
2021/01/28(木) 18:07:20.07ID:IHrlZHr2
>>243
gdbはおいとくとして、Visual StudioってC++例外のスロー位置を追跡できたっけ?
2021/01/28(木) 18:50:38.47ID:Hqj+H5f7
>>252
初期化リストを使う
B() : a(hoge, piyo)
2021/01/28(木) 18:54:30.61ID:IHrlZHr2
あとで再初期化したくなること多いから、結局コンストラクタの実装を別の関数に分離すること多いよね。
コンストラクタの種類が増えたら使いまわしたくなるし。
2021/01/28(木) 19:24:37.48ID:q3mIN91/
>>243
デバッガ使いこなせないとか話にならんだろ・・
258デフォルトの名無しさん
垢版 |
2021/01/28(木) 19:28:49.13ID:IHrlZHr2
デバッガやシンボルがない環境でもスタックトレースできたほうが良いと思うけどね。
後発言語の生産性の高さはこの辺の充実ぶりにあるでしょ。
259デフォルトの名無しさん
垢版 |
2021/01/28(木) 19:42:24.27ID:IHrlZHr2
他プロセスと連携するシステムにはデバッガを当てにくい事が多い。
タイミング依存の不具合を追跡する場合、デバッガがまったく役に立たない。
2021/01/28(木) 20:25:47.81ID:eBfsAdOM
>>258
その手の生産性と成果物の効率はトレードオフでどっちを重視するかが違うだけでしょ
2021/01/28(木) 20:36:13.14ID:IHrlZHr2
デバッガ使いこなすとか言って悦に入ってる人と会話が噛み合わないんだが。
262デフォルトの名無しさん
垢版 |
2021/01/28(木) 20:36:14.66ID:yp+dwtvR
>>258
だよね
むしろデバッガをアタッチできる環境ならスタックトレースはなくてもなんとかなる
ユーザー環境でスタックトレースがテキストファイルに落ちるようになってるとトラブルシューティングがしやすい
2021/01/28(木) 21:29:31.41ID:oPlwADge
>>261
ここほとんどアマチュアの人だから許してやろうやw
2021/01/28(木) 21:48:11.74ID:q3mIN91/
>>261, >>263
悪いがプロだよ
IDEの機能を使いこなせてない初心者が、先に学ぶべきことから逃げて言語だけでどうにかさせようとするような
(いつものことだが)はちみつのミスリードに釘を刺しただけだ
2021/01/28(木) 21:51:13.66ID:q3mIN91/
>>261
あと、流れを読む限り俺の発言が気に入らなくてファビョってるのは君の方だよね、俺1行しか書いてなかったし(しかも大した内容じゃない)w
何が気に障ったんだ?
2021/01/28(木) 21:51:23.69ID:oPlwADge
いやごめん、俺は流れは一切追ってなくて他意はないよ
茶化したかっただけ
気にしないで
2021/01/28(木) 23:50:09.41ID:g6qVZG7L
発狂やないかw
Perlの人かな
2021/01/28(木) 23:53:15.94ID:RfcrpqT0
>>253,255
じゃあ、Bを構築してしばらく経ってからわかる情報を使ってAを構築したいとき、Aのインスタンスをメンバとして持つのは不可能ということですか?
ポインタで持つ以外の方法はない (想定されてない?) のでしょうか

constなメンバ変数を初期化するときも近いことを思います
269デフォルトの名無しさん
垢版 |
2021/01/29(金) 00:10:27.15ID:ZIYbfTXe
>>268
そういうコンストラクタ制約を持つクラスはけっこう多い。
WindowsのC++向けGDI+ライブラリのクラス群はまさにこれが当てはまる。
広範に存在している以上は受け入れるしかない。
今時は標準でshared_ptrなどの共有ポインタクラスを使えるので、さほど問題にならないでしょ。
2021/01/29(金) 00:19:48.35ID:SRnp44iw
>>268
Aに引数なしのコンストラクタ、コピーorムーブ代入演算子があるなら、後で作って代入でもいいけど
まぁ特に理由なければ(スマート)ポインタで持った方が無難だし楽

constはどうしようもない
2021/01/29(金) 00:22:16.89ID:MWSZTtHp
>>268
「Bを構築してしばらく経ってからわかる情報」を返すヘルパー関数を作って初期化リストの中で呼べばいいじゃない
2021/01/29(金) 07:49:13.10ID:/axUqcOX
データメンバをconstってあんまりやらないな
publicに晒すとかじゃなきゃメンバ関数を
constにするだけで足りるから

あ、staticメンバのconstはよくやるけどね
2021/01/29(金) 08:02:53.38ID:1V7SRlCX
>>251
ある
実装は同じunsigned longでも意味が違うから別クラスとして扱いたいときとか
private継承できたらナア……
現状(C++03)はプリミティブ型と同じ演算子(のうちの当座のアプリケーションで使うやつ)をいちいち実装したクラスを作って
NDEBUGマクロで実装を切り替えるみたいな涙ぐましい努力が要る
2021/01/29(金) 08:05:13.74ID:1V7SRlCX
訂正orz
誤: private継承
正: public継承かつoperator unsigned long()はprivateかつunsigned longからの構築はexplicit
2021/01/29(金) 08:08:37.91ID:1V7SRlCX
メンバをconstにして代入演算子を定義せずにいるとデフォルトの代入演算子をが定義できないとコンパイラに文句を言われる俺環、
2021/01/29(金) 09:20:50.39ID:koPyq8om
>>273
それ、継承できたとして式の中で混在しても区別されないんじゃね?
テンプレートの型引数で区別するような使い方くらいしか思いつかないが。
2021/01/29(金) 12:20:22.74ID:c2S2Mocm
メンバ変数のconstはポインタ型ならすることあるけど、値で持つメンバ変数はあんまり意味なくない?
constなくても勝手に外部から書き換えられないように、ちゃんと隠蔽しとけばいいだけでしょ
2021/01/29(金) 12:35:16.78ID:2DekME/2
>>277
class内の処理においても変更しないつもりだ、変更されることはない、と明示することで意識しておかなければならないことを少し軽減できるのだから、無駄ではないと思う。
手間をかけずにconstにできるならしておけばいいし、逆に無理して複雑なことをしてまでconstにする必要はないという程度のことかと思う。
2021/01/29(金) 12:55:03.34ID:c2S2Mocm
>>278
たしかにconst付いてればコンストラクタで設定した値がずっと変わらないことが
明示的になるから無意味ではないか
2021/01/29(金) 14:10:30.45ID:heeNhc25
>>273
そういう用途なら opaque alias という提案だけは出てるけど
どう見てもグダグダなんで、場当たり的な方法のほうがマシだと思うよ。
281デフォルトの名無しさん
垢版 |
2021/01/29(金) 16:04:20.47ID:5pIDnM+S
>>251
3値のboolean作るときってboolean継承すべき?
282デフォルトの名無しさん
垢版 |
2021/01/29(金) 16:07:44.73ID:5pIDnM+S
>>256
言いたいことは判るが
コピーコンストラクタやムーブコンストラクタが勝手に使われるから
デフォルトに任せてると何が起こるかは判ってた方が良い
283デフォルトの名無しさん
垢版 |
2021/01/29(金) 16:10:21.66ID:5pIDnM+S
>>259
COMサーバーというかDX用にフィルタ書いてると訳判らなくなった
284デフォルトの名無しさん
垢版 |
2021/01/29(金) 16:56:37.48ID:RxAp4EkX
>>281
3値のbooleanを作って何するの?
boolへのポインタにしてtrue / false / nullptr の3値でなんとかならんか?
2021/01/29(金) 17:20:59.69ID:ADFs+h5F
boostにtriboolってのがあるな
2021/01/29(金) 17:23:22.91ID:t7wU8l8M
>>281
仮に真偽値型を継承可能であったとして、三値型が真偽値型を継承するのはおかしいだろう。
場合によって柔軟な判断が必要な場合はあるものの、
継承は is-a 関係を表したいときに限ったほうがよろしいというのが一般的な設計原則だと思うが。
2021/01/29(金) 17:25:47.23ID:GtDK4kd8
nullableか、DBのフィールド値?
2021/01/29(金) 18:57:54.24ID:ZIYbfTXe
はちみつ餃子「スタックトレースできないならデバッガ当てればいいじゃない」
2021/01/29(金) 19:41:08.91ID:rAmh2V0K
典型的な円楕円問題だな
2021/01/29(金) 19:56:26.71ID:ZIYbfTXe
テンプレートを使えば、クラス継承に依存しない記述が可能。
iostreamが黒歴史扱いである現実を踏まえての話。
2021/01/29(金) 21:24:08.77ID:WFMo+mcm
とりあえずiostream批判しとけば訳知り顔ができた気に浸れる浅はかなやつ
2021/01/29(金) 21:35:39.96ID:nnAlz0gZ
c++ニワカあるあるだよなw
iostreamとりあえず批判奴w
2021/01/29(金) 21:39:11.47ID:ZIYbfTXe
iostreamは使いもしないメンバ変数を継承することを強要される悪い手本でしょ。
2021/01/29(金) 22:16:38.63ID:WFMo+mcm
何も説得力を示さずに突然「悪い」と言い出す
2021/01/30(土) 01:56:51.26ID:SJAC6oP5
iostreamはクソなのは正解だが別に批判するようなことでもない
なぜなら使わなければいいだけの話だからだ
2021/01/30(土) 02:06:50.03ID:OHt9F1SU
無理にクラス継承を使わずオーバーライド関数とそれを使うテンプレート関数を充実させたほうが幸せになれる。
2021/01/30(土) 02:41:04.49ID:PJvUkb6d
別に無理して継承を使っているわけではない
どっかの馬の骨が気に入らんからといって
あれを使うなこれを使うなと言われるほうが無理そのものだ
2021/01/30(土) 02:53:37.72ID:OHt9F1SU
例えば、ファイルに書き込む処理があったとする。
ファイルハンドルとして有名な型としては、int型、FILE*型、iostream型、Win32APIのHANDLE型などがあげられる。
これらを派生クラスに閉じ込めて抽象化するよりも、関数名が同じになるオーバーライド関数を作ってテンプレート関数から呼んだ方がはるかに楽。

int WriteBuffer(int fp, const char* buffer);
int WriteBuffer(FILE* fp, const char* buffer);
int WriteBuffer(ostream& fp, const char* buffer);
int WriteBuffer(HANDLE fp, const char* buffer);

template<typename FILE_OBJECT>
void WriteContent(FILE_OBJECT o)
{
WriteBuffer(o, "write test1");
WriteBuffer(o, "write test2");
}
2021/01/30(土) 03:53:39.52ID:ULcRPxme
ドヤってるところすまんがそれオーバーライドじゃない
2021/01/30(土) 04:01:05.04ID:PJvUkb6d
プゲラ
301デフォルトの名無しさん
垢版 |
2021/01/30(土) 05:45:11.84ID:SLqQC90z
フリー関数とクラスメンバでは、インテリセンスが効くか効かないかの違いもある。
2021/01/30(土) 05:52:17.44ID:OHt9F1SU
そんなあなたに名前空間
303デフォルトの名無しさん
垢版 |
2021/01/30(土) 06:06:53.60ID:SLqQC90z
クラスの場合、名前空間を書かなくても、インテリセンスが効く。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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