次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part137
■ このスレッドは過去ログ倉庫に格納されています
2018/07/14(土) 17:53:02.14ID:FOAGvAbs
442デフォルトの名無しさん
2018/07/30(月) 19:42:11.85ID:qnQc5JET443デフォルトの名無しさん
2018/07/30(月) 21:47:15.09ID:hbo0m8kQ 上のほうで、唇がメンタイコの欲深そうなのがいるな。
2chに引っ込んでいろや。屑が
2chに引っ込んでいろや。屑が
444デフォルトの名無しさん
2018/07/31(火) 20:27:14.08ID:jvSfH+BG たらこじゃなくてか。
445デフォルトの名無しさん
2018/07/31(火) 21:48:26.82ID:f0EnkAzQ 明太子はたらこのこと
唐辛子を塗したやつは辛子明太子
唐辛子を塗したやつは辛子明太子
446デフォルトの名無しさん
2018/07/31(火) 22:24:08.58ID:jvSfH+BG そっかw
素で辛子明太子と間違えたわ。
素で辛子明太子と間違えたわ。
447デフォルトの名無しさん
2018/08/01(水) 00:24:00.80ID:VquDbSfz アルゴリズム辞典みたいなものを手元に置いときたいんだが、最も支持されてるのってどれ?
・網羅性が高い
・支持されている(売れている)
・日本語版がある
・コード例はあってもなくても良くて、あるとしたら C/C++ か擬似コードで
という条件で
テーマ別に「どれとどれとどれを持っとけばまず問題ない」という言い方でもありがたい
とにかく網羅性を重視してる
・網羅性が高い
・支持されている(売れている)
・日本語版がある
・コード例はあってもなくても良くて、あるとしたら C/C++ か擬似コードで
という条件で
テーマ別に「どれとどれとどれを持っとけばまず問題ない」という言い方でもありがたい
とにかく網羅性を重視してる
448デフォルトの名無しさん
2018/08/01(水) 00:35:56.57ID:/iJJIMGp 会社でC++書くことになったんですがコードが(ダブル)ポインタの嵐で読みにくいことこの上なくて辛いです
他にもstring使わずにchar配列だったり、vector使わずに配列だったり
Cのスタイルで書ける部分はできるだけCのスタイルで書くほうがやはり好まれるものなのでしょうか
前に個人でちょろっと書いたときはもうポインタ使わなくて済むならできるだけ使わないように!なんて思いながら書いてたんですが
他にもstring使わずにchar配列だったり、vector使わずに配列だったり
Cのスタイルで書ける部分はできるだけCのスタイルで書くほうがやはり好まれるものなのでしょうか
前に個人でちょろっと書いたときはもうポインタ使わなくて済むならできるだけ使わないように!なんて思いながら書いてたんですが
449デフォルトの名無しさん
2018/08/01(水) 00:42:34.65ID:hfBYO5dB 色々な事情があるのかも
Cからの移植とか
小規模だとヒープはトラブルの元なので極力使わないとか
そもそもヒープが無いとか
Cからの移植とか
小規模だとヒープはトラブルの元なので極力使わないとか
そもそもヒープが無いとか
450デフォルトの名無しさん
2018/08/01(水) 00:56:47.14ID:8dN6QsuX >>448
ポインタ使わなくてもイテレータの嵐を渡り歩いたり
スマートポインタが何をしているのかを理解するには
ポインタを使う場合のノウハウ知識が必須だよ
stringやvectorを避けている箇所にはそれなりの理由があるから
極力思い込みを排除して状況をよく見たほうがいい
ポインタ使わなくてもイテレータの嵐を渡り歩いたり
スマートポインタが何をしているのかを理解するには
ポインタを使う場合のノウハウ知識が必須だよ
stringやvectorを避けている箇所にはそれなりの理由があるから
極力思い込みを排除して状況をよく見たほうがいい
451デフォルトの名無しさん
2018/08/01(水) 01:01:22.52ID:uLizLGZM >>447
合計\7,000--
珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造 | ジョン・ベントリー, 小林 健一郎 |本 | 通販 | Amazon
ttps://www.amazon.co.jp/dp/4621066072
O'Reilly Japan - アルゴリズムクイックリファレンス 第2版
ttps://www.oreilly.co.jp/books/9784873117850/
C言語による最新アルゴリズム事典の詳細情報 : Vector ソフトを探す!
ttps://www.vector.co.jp/soft/data/prog/se002453.html
合計\7,000--
珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造 | ジョン・ベントリー, 小林 健一郎 |本 | 通販 | Amazon
ttps://www.amazon.co.jp/dp/4621066072
O'Reilly Japan - アルゴリズムクイックリファレンス 第2版
ttps://www.oreilly.co.jp/books/9784873117850/
C言語による最新アルゴリズム事典の詳細情報 : Vector ソフトを探す!
ttps://www.vector.co.jp/soft/data/prog/se002453.html
452デフォルトの名無しさん
2018/08/01(水) 02:12:56.94ID:VquDbSfz >>451
ありがとうございます。
最初のも辞典的なものなんでしょうか。
複数冊持つならばテーマ毎が良いかなとも思いましたが、特定のテーマに集中したものだと翻訳されているものが少ないのかもしれませんね。
2つ目と3つ目が部分的に補完しあっていることを期待して、両者とも購入しようかと思います。
ありがとうございます。
最初のも辞典的なものなんでしょうか。
複数冊持つならばテーマ毎が良いかなとも思いましたが、特定のテーマに集中したものだと翻訳されているものが少ないのかもしれませんね。
2つ目と3つ目が部分的に補完しあっていることを期待して、両者とも購入しようかと思います。
453デフォルトの名無しさん
2018/08/01(水) 02:19:31.07ID:Bdxs44t0 the art of computer programming
numerical recipes
コレしかないわ
numerical recipes
コレしかないわ
454はちみつ餃子 ◆8X2XSCHEME
2018/08/01(水) 02:25:19.38ID:oNWxQcbM >>451
「C言語による最新アルゴリズム事典」はこないだ改定されて「C言語による標準アルゴリズム事典」という表題で売ってるぞ。
http://amzn.asia/cgZYRrQ
ロングセラーになりすぎたせいで「いつまで最新やねん」というのは常々言われづづけてたからなぁ。
「C言語による最新アルゴリズム事典」はこないだ改定されて「C言語による標準アルゴリズム事典」という表題で売ってるぞ。
http://amzn.asia/cgZYRrQ
ロングセラーになりすぎたせいで「いつまで最新やねん」というのは常々言われづづけてたからなぁ。
455デフォルトの名無しさん
2018/08/01(水) 02:49:17.77ID:GZaAdjmn >>448-450
多分そいつは、Scott Meyers を知らないし、
ほとんどの言語に「Effective 何々」があることも知らないのだろうw
そいつに、Scott Meyers を知っていますかって聞けば?
プロで、江添亮とかScott Meyers を知らん奴は、いない
多分そいつは、Scott Meyers を知らないし、
ほとんどの言語に「Effective 何々」があることも知らないのだろうw
そいつに、Scott Meyers を知っていますかって聞けば?
プロで、江添亮とかScott Meyers を知らん奴は、いない
456デフォルトの名無しさん
2018/08/01(水) 06:52:26.90ID:l9oYGZY2 会社に対してそいつ?
457デフォルトの名無しさん
2018/08/01(水) 07:00:43.17ID:0Pfosj1X stringやvectorはヒープなので、呼び出し回数の多い関数で毎回インスタンスを作る場合は処理時間に注意したいところ。
458はちみつ餃子 ◆8X2XSCHEME
2018/08/01(水) 07:02:13.71ID:oNWxQcbM まあ状況によるわなー。
後から伸長 (または縮小) が必要ないような固定長のデータを std::vector に入れるのは豪華すぎるので、
避けれるなら避けたいということは有りうる。
それでも今どきなら std::array を使って欲しいけど、
古いプログラムをツギハギしながら使ってるような場合にはなかなかそうもいかない事情があるのかもしれん。
単純には判断できないので、わかんないことはそれを書いてるやつに聞けとしか言いようがないんじゃない?
後から伸長 (または縮小) が必要ないような固定長のデータを std::vector に入れるのは豪華すぎるので、
避けれるなら避けたいということは有りうる。
それでも今どきなら std::array を使って欲しいけど、
古いプログラムをツギハギしながら使ってるような場合にはなかなかそうもいかない事情があるのかもしれん。
単純には判断できないので、わかんないことはそれを書いてるやつに聞けとしか言いようがないんじゃない?
459デフォルトの名無しさん
2018/08/01(水) 07:40:49.09ID:OccwPm6d stl使うと同バージョンのライブラリを実行環境にインストールするという考慮も増える
460デフォルトの名無しさん
2018/08/01(水) 07:53:02.77ID:hfBYO5dB えっ?
何か勘違いしてないか?
何か勘違いしてないか?
461デフォルトの名無しさん
2018/08/01(水) 18:55:57.40ID:4hR5DucF やっぱり通になると、明太子ひとつ、辛子抜きで・・・とか注文するんだろな。
463デフォルトの名無しさん
2018/08/01(水) 19:11:49.62ID:a1G0tkY3 >>462
第2刷買ったっけな。役に立ったと思う。
第2刷買ったっけな。役に立ったと思う。
464デフォルトの名無しさん
2018/08/01(水) 19:41:42.72ID:7TmTR3QV >>462
板を荒らすのやめろよ
板を荒らすのやめろよ
465デフォルトの名無しさん
2018/08/01(水) 20:37:51.59ID:/iJJIMGp ポインタの件ですが参考になりました。まぁこっちはほぼ初心者で相手はベテランの上司なので何も言えない聞けないってとこですね
stackoverflowとか読んで生ポインタあんま使うなスマポ使えオブジェクト使えるときは使えみたいなこと書いてあるの見るとこれでいいのかなって思いますねええ
stackoverflowとか読んで生ポインタあんま使うなスマポ使えオブジェクト使えるときは使えみたいなこと書いてあるの見るとこれでいいのかなって思いますねええ
466はちみつ餃子 ◆8X2XSCHEME
2018/08/01(水) 23:13:55.56ID:oNWxQcbM std::unique_ptr は実行時の速度ペナルティもほとんどないので、避ける理由はあんまりないよな。
例外がとんだ時のロールバックについても面倒なことを考えなくて良いし。
例外がとんだ時のロールバックについても面倒なことを考えなくて良いし。
467デフォルトの名無しさん
2018/08/01(水) 23:34:41.68ID:GZaAdjmn たぶん、Scott Meyers とか「Effective 何々」とか、知らんのだろ
たぶん正常に動作する、過去の資産を持っていて、それをコピーして使う作り方なのかも
現場でよくあるのは、サンプル欲しいと言うと、過去のソースコードを持ってきて、
これは動くから、そのままコピーして使って下さいと言われる
新しい事をしようと思うと、環境構築やらで、動かない部分が出てくるので、非常に面倒
それに過去のソースコードは、あちこちで使われているから、バグが少ないという実績があるけど、
新しく作ったものは、バグ出しが大変。
安定するまで、かなりの期間が必要
よほどの理由がない限り、新しく作らない
たぶん正常に動作する、過去の資産を持っていて、それをコピーして使う作り方なのかも
現場でよくあるのは、サンプル欲しいと言うと、過去のソースコードを持ってきて、
これは動くから、そのままコピーして使って下さいと言われる
新しい事をしようと思うと、環境構築やらで、動かない部分が出てくるので、非常に面倒
それに過去のソースコードは、あちこちで使われているから、バグが少ないという実績があるけど、
新しく作ったものは、バグ出しが大変。
安定するまで、かなりの期間が必要
よほどの理由がない限り、新しく作らない
468デフォルトの名無しさん
2018/08/02(木) 03:53:49.14ID:iSPNCiYK >>451
どれか一つで良くね
ほとんど被ってるっしょ
あえて選ぶならアルゴリズムクイックリファレンス
網羅性ってヤツを追及するなら、同じようなもんいくつも買うんじゃなくて自分で言ってるようにテーマに特化したものを買うしかない
名前忘れたけど文字列アルゴリズムのアレとか
どれか一つで良くね
ほとんど被ってるっしょ
あえて選ぶならアルゴリズムクイックリファレンス
網羅性ってヤツを追及するなら、同じようなもんいくつも買うんじゃなくて自分で言ってるようにテーマに特化したものを買うしかない
名前忘れたけど文字列アルゴリズムのアレとか
469はちみつ餃子 ◆8X2XSCHEME
2018/08/02(木) 06:10:43.23ID:ksgx4qMg >>447
Knuth の 「The Art of Computer Programming」もその条件に当てはまると思う。
Knuth の 「The Art of Computer Programming」もその条件に当てはまると思う。
470デフォルトの名無しさん
2018/08/02(木) 07:12:52.80ID:NSwKZwuS 圧縮アルゴリズムなんか、本で憶えたんじゃなく
FAXだとかモデムみたいな具体的なブツで憶えたな
その他のアルゴリズムも単行本より雑誌で
憶えたのが多いし
FAXだとかモデムみたいな具体的なブツで憶えたな
その他のアルゴリズムも単行本より雑誌で
憶えたのが多いし
471デフォルトの名無しさん
2018/08/02(木) 10:20:23.60ID:KhTk1OQU そのあたりのアルゴリズムはCマガで覚えた
472デフォルトの名無しさん
2018/08/02(木) 10:41:45.24ID:zFALVR92 >>468
これ?
高速文字列解析の世界――データ圧縮・全文検索・テキストマイニング (確率と情報の科学) | 岡野原 大輔 |本 | 通販 | Amazon
ttps://www.amazon.co.jp/dp/4000069748
「高速文字列解析の世界」サポートページ - daisuke.okanohara
ttps://sites.google.com/site/daisukeokanohara/iwanami_string_world
これ?
高速文字列解析の世界――データ圧縮・全文検索・テキストマイニング (確率と情報の科学) | 岡野原 大輔 |本 | 通販 | Amazon
ttps://www.amazon.co.jp/dp/4000069748
「高速文字列解析の世界」サポートページ - daisuke.okanohara
ttps://sites.google.com/site/daisukeokanohara/iwanami_string_world
473デフォルトの名無しさん
2018/08/02(木) 11:27:51.52ID:KhTk1OQU そのジャンルは大体の場合は条件固定じゃないからツール類を使ったほうがいい
474デフォルトの名無しさん
2018/08/02(木) 17:47:42.68ID:QC+SfWnq >>447,451,468
蟻本の参考文献揃えるのがおすすめ
蟻本の参考文献揃えるのがおすすめ
475デフォルトの名無しさん
2018/08/02(木) 17:50:02.28ID:QC+SfWnq って思って確認したらそんな良くなかったスマン
>>470
文書圧縮について手元に置いていつも参照しているのは
https://www.amazon.co.jp/dp/478983672X/
今は、jpg の本が欲しいと思っていますが、なにかいいのはありますか?
文書圧縮について手元に置いていつも参照しているのは
https://www.amazon.co.jp/dp/478983672X/
今は、jpg の本が欲しいと思っていますが、なにかいいのはありますか?
477デフォルトの名無しさん
2018/08/02(木) 19:38:11.37ID:nAUx6Lke C++極めたいんだけど、どうすれば極められる?
仕事はJavaScriptが主です
今はアルゴリズムの本読んでるのですが、個人的にはC++ドラフトの間違いを指摘できるレベルになりたいです
仕事はJavaScriptが主です
今はアルゴリズムの本読んでるのですが、個人的にはC++ドラフトの間違いを指摘できるレベルになりたいです
478デフォルトの名無しさん
2018/08/02(木) 19:48:55.00ID:1EegAYN5 そんな事を人に聞いてる様じゃ一生無理
479デフォルトの名無しさん
2018/08/02(木) 19:57:10.95ID:Ro0F3mb9480デフォルトの名無しさん
2018/08/02(木) 20:52:27.89ID:jf+aoeV/481デフォルトの名無しさん
2018/08/02(木) 21:22:49.70ID:EkY0QbOC コンパイラ読めないと話にならんのじゃないか?
482デフォルトの名無しさん
2018/08/02(木) 21:53:24.64ID:0KRWeg2T >>480
職場に何を頼るの?
職場に何を頼るの?
483デフォルトの名無しさん
2018/08/02(木) 22:18:49.50ID:NSwKZwuS484デフォルトの名無しさん
2018/08/02(木) 22:24:42.73ID:Ar8oKNDv >>480
読んでばかりじゃなくて自発的に自分で実際に書いてみないことには、いつまでたってもたいして身に付かないだろう。
極めたいなら、言語仕様の一つ一つを実際に使ってみて具体的に役立つケースや制限、制約、限界を体感して、メリットデメリットを洗い出すくらいのつもりで試してみたら?
読んでばかりじゃなくて自発的に自分で実際に書いてみないことには、いつまでたってもたいして身に付かないだろう。
極めたいなら、言語仕様の一つ一つを実際に使ってみて具体的に役立つケースや制限、制約、限界を体感して、メリットデメリットを洗い出すくらいのつもりで試してみたら?
485デフォルトの名無しさん
2018/08/02(木) 23:26:26.75ID:jf+aoeV/486デフォルトの名無しさん
2018/08/03(金) 02:17:39.89ID:gpdbLiuq487デフォルトの名無しさん
2018/08/03(金) 02:23:34.66ID:Ja3muTb1 自作ツールはまず、スクリプト言語でやってみて、速度面などで不満があった時だけC・C++に置き換えるのがいいと思うけどどうなの。
スクリプト言語とコンパイル言語の使い分けを覚える良い機会になる。
スクリプト言語とコンパイル言語の使い分けを覚える良い機会になる。
488デフォルトの名無しさん
2018/08/03(金) 02:28:52.17ID:gpdbLiuq489デフォルトの名無しさん
2018/08/03(金) 07:41:26.05ID:jYMqs03L 極めると言うても、次の規格が出たらもう過去の知識だし、
いくら頑張っても到達できないゴールのような気がするなぁ。
規格を作る側に入り込めるなら話は違うかも知れんが。
C++は、自分より後ろにいる人をバカにするのが好きな人も多い感じだけど、
「そんな奴にはならん方がええ」
いくら頑張っても到達できないゴールのような気がするなぁ。
規格を作る側に入り込めるなら話は違うかも知れんが。
C++は、自分より後ろにいる人をバカにするのが好きな人も多い感じだけど、
「そんな奴にはならん方がええ」
490はちみつ餃子 ◆8X2XSCHEME
2018/08/03(金) 08:11:10.53ID:KKWcqInB ある程度の言語機能しか使わない範囲でも使い物になるように C++ は設計されてる。
ある程度を学めばその範囲内でも実務に使える。
もちろん深い理解があればプログラムをよりよく構成できるので、
実務に使いながら平行して段階的に学ぶということが出来る。
このことは設計者が著した D&E に書かれてる基礎理念のひとつだ。
地に足の着いた、現実的なものとして設計されてるんだよ。
だから、言語としての C++ だけに偏って学ぶのはお勧めできない。
言語として不格好な部分も現実の中では相応の合理性があったりして、
それを学習するのに適しているのは現実のプログラミングだと思う。
ただ、余談だけど、段階的に学べるようにというのはスタート地点として C を想定しているように思う。
C が当然の基礎知識としてあった時代には
そこからシームレスに C++ を学んでいけるように設計するのは妥当な選択だったかもしれないが、
今の時代には C++ の中の C の部分は色々と足を引っ張ってもいるので
歴史が長いと泥臭い部分も積み重なっていくものだなぁと思いました。 (小並感)
ある程度を学めばその範囲内でも実務に使える。
もちろん深い理解があればプログラムをよりよく構成できるので、
実務に使いながら平行して段階的に学ぶということが出来る。
このことは設計者が著した D&E に書かれてる基礎理念のひとつだ。
地に足の着いた、現実的なものとして設計されてるんだよ。
だから、言語としての C++ だけに偏って学ぶのはお勧めできない。
言語として不格好な部分も現実の中では相応の合理性があったりして、
それを学習するのに適しているのは現実のプログラミングだと思う。
ただ、余談だけど、段階的に学べるようにというのはスタート地点として C を想定しているように思う。
C が当然の基礎知識としてあった時代には
そこからシームレスに C++ を学んでいけるように設計するのは妥当な選択だったかもしれないが、
今の時代には C++ の中の C の部分は色々と足を引っ張ってもいるので
歴史が長いと泥臭い部分も積み重なっていくものだなぁと思いました。 (小並感)
491デフォルトの名無しさん
2018/08/03(金) 10:14:53.94ID:lq/KEYA1 20年近く使ってるけど、ドラフトとか目にしても
「こんな機能来るんや!」ってwktkするだけだな
規格を知ってれば極めてる、みたいな風潮が最近あるけど間違いやで
言語はあくまで道具だから使ってなんぼ
「こんな機能来るんや!」ってwktkするだけだな
規格を知ってれば極めてる、みたいな風潮が最近あるけど間違いやで
言語はあくまで道具だから使ってなんぼ
492デフォルトの名無しさん
2018/08/03(金) 10:29:03.00ID:cfhQf2V5 みんな深いレスありがとう
ただ自分はどうしても諦めきれないので、仕事以外の時間は、C++に関するサイトや書籍やコーディングに費やすことになると思う
Pythonは学ぼうとは思ってるけどね
ただ自分はどうしても諦めきれないので、仕事以外の時間は、C++に関するサイトや書籍やコーディングに費やすことになると思う
Pythonは学ぼうとは思ってるけどね
493デフォルトの名無しさん
2018/08/03(金) 10:49:41.39ID:TY6Sib0f ttps://github.com/python/cpython/tree/master/Python
今ならpythonのソースコードもオマケで学べるよ
今ならpythonのソースコードもオマケで学べるよ
494デフォルトの名無しさん
2018/08/03(金) 12:16:04.74ID:cfhQf2V5495デフォルトの名無しさん
2018/08/03(金) 15:41:42.81ID:Ja3muTb1 スクリプト言語には、ハッシュテーブルやディクショナリなどと呼ばれるキーと値の組を保存するコンテナ機能が存在する。
一般に高速とされるC++だが、実は、ハッシュテーブルだけはスクリプト言語の方がアクセス速度が速かった。
ただし、C++におけるstd::mapだけがハッシュテーブルに該当した頃の話。
今は、std::unordered_mapがあるのでスクリプト言語と同等以上の速度でハッシュテーブルにアクセス可能になっている。
一般に高速とされるC++だが、実は、ハッシュテーブルだけはスクリプト言語の方がアクセス速度が速かった。
ただし、C++におけるstd::mapだけがハッシュテーブルに該当した頃の話。
今は、std::unordered_mapがあるのでスクリプト言語と同等以上の速度でハッシュテーブルにアクセス可能になっている。
496デフォルトの名無しさん
2018/08/03(金) 18:32:37.47ID:j4paKoWq mapはハッシュテーブルに該当しないだろ。
そういうときは辞書とかマップとか連想配列とかと呼ぶべきだ。
そういうときは辞書とかマップとか連想配列とかと呼ぶべきだ。
497デフォルトの名無しさん
2018/08/03(金) 18:52:42.14ID:9KGEdKKU mapは連想コンテナだが
498デフォルトの名無しさん
2018/08/03(金) 19:03:27.95ID:j4paKoWq ハッシュテーブルじゃない
499デフォルトの名無しさん
2018/08/03(金) 23:13:28.65ID:B+FOIxCl クラス設計で悩んでいるんだが、みんなの意見を聞きたい
やりたいのは、いわゆるデザインパターン template methodを使ったクラス設計
class Parent {
public:
void execute() {
method1();
method2();
method3();
}
private:
virtual void method1();
virtual void method2();
virtual void method3();
}
子クラスのChild1, Child2でmethod1(), method2(), method3()をそれぞれオーバーライドして処理を分けている
ここで、Child3を追加しようと思うんだけど、method1()の内容はChild2::method1()と全く同じになる
これをどう実装しようかいろいろ悩んだんだが、どれもピンとこない。
そもそも最初の設計がおかしーんじゃねーの?とかこうしたらよくない?とかここおかしくね?とか意見あったら頼む
一応以下は自分が考えていること
@Child2, Child3の親クラスを抽出して、そっちに共通処理として書く
→実装のために継承関係を作るのはあまりよくない気がする
A別クラス(Utilクラス?)を作ってそっちにまとめる
→メンバ変数とか使ってると少し面倒かな。本質的でない気もする。
BChild3::method1()->Child2::method1()とコンポジション的にする
せっかく横のつながりができないようにしてるのに、ここでできるのはよくない
C親クラスに共通メソッドを作って、Child2::method1()とChild3::method1()はそれを呼ぶ
→しっくりこないけど、妥協点かな・・・
DしゃーないChild2::method1()コピペで!
→これはまあ論外かな、時間が全くないときの最終手段
やりたいのは、いわゆるデザインパターン template methodを使ったクラス設計
class Parent {
public:
void execute() {
method1();
method2();
method3();
}
private:
virtual void method1();
virtual void method2();
virtual void method3();
}
子クラスのChild1, Child2でmethod1(), method2(), method3()をそれぞれオーバーライドして処理を分けている
ここで、Child3を追加しようと思うんだけど、method1()の内容はChild2::method1()と全く同じになる
これをどう実装しようかいろいろ悩んだんだが、どれもピンとこない。
そもそも最初の設計がおかしーんじゃねーの?とかこうしたらよくない?とかここおかしくね?とか意見あったら頼む
一応以下は自分が考えていること
@Child2, Child3の親クラスを抽出して、そっちに共通処理として書く
→実装のために継承関係を作るのはあまりよくない気がする
A別クラス(Utilクラス?)を作ってそっちにまとめる
→メンバ変数とか使ってると少し面倒かな。本質的でない気もする。
BChild3::method1()->Child2::method1()とコンポジション的にする
せっかく横のつながりができないようにしてるのに、ここでできるのはよくない
C親クラスに共通メソッドを作って、Child2::method1()とChild3::method1()はそれを呼ぶ
→しっくりこないけど、妥協点かな・・・
DしゃーないChild2::method1()コピペで!
→これはまあ論外かな、時間が全くないときの最終手段
500デフォルトの名無しさん
2018/08/03(金) 23:20:08.01ID:cWBuX5k9 Child3をChild2の子にすれば?
501デフォルトの名無しさん
2018/08/03(金) 23:22:51.86ID:Ja3muTb1 共通処理を継承関係と無縁なtemplate関数にできないか検討してみては?
502デフォルトの名無しさん
2018/08/03(金) 23:26:40.59ID:Xb0+UQnK503デフォルトの名無しさん
2018/08/03(金) 23:28:34.49ID:Xb0+UQnK 4の改良?として
実装ファイルの無名スコープにvoid method1(const Parent& p)かな
実装ファイルの無名スコープにvoid method1(const Parent& p)かな
504デフォルトの名無しさん
2018/08/03(金) 23:36:56.13ID:xr+Hum6X 派生させるんじゃなくてメソッドの処理を別クラスにして移譲させるんじゃないの?
505デフォルトの名無しさん
2018/08/04(土) 00:12:06.53ID:AH7fLvgn >>499
> 実装のために継承関係を作るのはあまりよくない気がする
と言いつつ
> 親クラスに共通メソッドを作って、Child2::method1()とChild3::method1()はそれを呼ぶ
とか意味わからん
全然関係ないのにたまたま一緒になったと言うなら
> しゃーないChild2::method1()コピペで!
しかないと思うが
> 実装のために継承関係を作るのはあまりよくない気がする
と言いつつ
> 親クラスに共通メソッドを作って、Child2::method1()とChild3::method1()はそれを呼ぶ
とか意味わからん
全然関係ないのにたまたま一緒になったと言うなら
> しゃーないChild2::method1()コピペで!
しかないと思うが
506デフォルトの名無しさん
2018/08/04(土) 00:38:11.84ID:hQAAmMi0 コーディング規約で、引数や戻り値に参照型は使うな。わかりにくくなるから。ポインタで渡してポインタで返せ
ってことになってるんですけどこれ一般的な考え方なんですかね。生ポインタ使いまくりの方がよっぽどわかりにくいと思うんですけど
ってことになってるんですけどこれ一般的な考え方なんですかね。生ポインタ使いまくりの方がよっぽどわかりにくいと思うんですけど
507デフォルトの名無しさん
2018/08/04(土) 00:53:09.47ID:CpwGeL+S そんなことよりメソッドでクラスのインスタンスが変更されない場合
そのメソッドにちゃんとconstつけろよ
引数でクラス使う場合も、そのクラスのインスタンスが変更されない場合
その引数にちゃんとconstつけろよ
わかった?
そのメソッドにちゃんとconstつけろよ
引数でクラス使う場合も、そのクラスのインスタンスが変更されない場合
その引数にちゃんとconstつけろよ
わかった?
508デフォルトの名無しさん
2018/08/04(土) 00:58:03.49ID:0clFfLhT509デフォルトの名無しさん
2018/08/04(土) 01:05:30.18ID:Xh+3QD0k 引数については、読み書きする引数は注意をひくためにポインタ渡しにして、読み取りだけの引数は参照渡しにするといいのでは。
戻り値については、失敗したことを意味するNULLを使えるのでポインタのほうがうれしいかも。
戻り値については、失敗したことを意味するNULLを使えるのでポインタのほうがうれしいかも。
510デフォルトの名無しさん
2018/08/04(土) 01:06:58.94ID:QByQ49xB >>499
execute が virtual でないってことは
Parentを基底にしてコレクションしなくてもいいってことでOK?
>>501 の言うように template で mixin 的に書いたら こんな感じになったー
https://ideone.com/CcRHnO
ChildがKlassになって兄弟関係がなくなってる
execute が virtual でないってことは
Parentを基底にしてコレクションしなくてもいいってことでOK?
>>501 の言うように template で mixin 的に書いたら こんな感じになったー
https://ideone.com/CcRHnO
ChildがKlassになって兄弟関係がなくなってる
511デフォルトの名無しさん
2018/08/04(土) 01:12:24.24ID:CpwGeL+S 戻り値なんか全部intでいい
0未満ならすべて一貫してすべてエラー
失敗がありえないブーリアンだけはかろうじてあり
引数をポインタで渡せないとNULLを渡して処理したい場合の処理ができない
そういうとき困るから全部ポインタで
0未満ならすべて一貫してすべてエラー
失敗がありえないブーリアンだけはかろうじてあり
引数をポインタで渡せないとNULLを渡して処理したい場合の処理ができない
そういうとき困るから全部ポインタで
512デフォルトの名無しさん
2018/08/04(土) 05:12:55.60ID:iUNKVgUH 素人ばっかりかw
「More Effective C++」の項目1 だろ
Effectiveも読んでいない奴が、プログラミングやってるのが不思議。
どの言語でも、Effectiveは、入門書の次に読む本やぞ
参照は、確実にNULL じゃない場合。
また、参照に再代入はしない事
「More Effective C++」の項目1 だろ
Effectiveも読んでいない奴が、プログラミングやってるのが不思議。
どの言語でも、Effectiveは、入門書の次に読む本やぞ
参照は、確実にNULL じゃない場合。
また、参照に再代入はしない事
513デフォルトの名無しさん
2018/08/04(土) 05:25:27.41ID:YA1hWK5Y HRESULTも知らないヒヨッ子がいきってるな
514デフォルトの名無しさん
2018/08/04(土) 06:40:25.30ID:O/qEXyQX 参照に再代入ってどうやんの
515デフォルトの名無しさん
2018/08/04(土) 07:29:12.24ID:o+LfwS0J cからのコードが多い場合は統一のために参照渡しにしないってのはあるかな。
516デフォルトの名無しさん
2018/08/04(土) 07:33:54.06ID:YA1hWK5Y extern "C"に参照渡しなんかするかよ
517デフォルトの名無しさん
2018/08/04(土) 07:42:44.96ID:Xh+3QD0k たかが参照にストレスを感じるようになったら、C/C++プログラマをやめた方がいい。引退時。
518デフォルトの名無しさん
2018/08/04(土) 08:00:44.90ID:mQQzn2Q+519デフォルトの名無しさん
2018/08/04(土) 08:29:49.29ID:Xh+3QD0k 私見を言わせてもらうと、多様性を受け入れ状況に合わせて柔軟に合わせていくのもプログラマあるいは技術者の重要なスキルなので、
一神教的な偏狭な人は若年性認知症とまで言ってのける気はないがかなり情報処理能力が低くなっているはずなので、プログラミングをやめた方がいい。
一神教的な偏狭な人は若年性認知症とまで言ってのける気はないがかなり情報処理能力が低くなっているはずなので、プログラミングをやめた方がいい。
520デフォルトの名無しさん
2018/08/04(土) 09:34:28.56ID:0uMuTyGR プログラミングがどうこういうより国語を勉強しろ。
521デフォルトの名無しさん
2018/08/04(土) 09:35:16.17ID:o+LfwS0J 柔軟なのと規約を決めないのはまた別だけどね。
多様性といって新しい言語使って同じ過ちを繰り返している人を何人も見てると
色々バカバカしくなるってところはある。
老害と同じくらい歴史を見ない若造も有害という現実を見るのも良い。
多様性といって新しい言語使って同じ過ちを繰り返している人を何人も見てると
色々バカバカしくなるってところはある。
老害と同じくらい歴史を見ない若造も有害という現実を見るのも良い。
522デフォルトの名無しさん
2018/08/04(土) 09:50:53.54ID:2dadGiC9 まあ少なくとも>>506が老害であるのは確か
実務経験が少ない若者が多いのも当たり前
実務経験が少ない若者が多いのも当たり前
523デフォルトの名無しさん
2018/08/04(土) 09:53:11.49ID:F7vd0ILk 老害なんて言っている奴、10年後に自分がそう呼ばれるって事気がついてないのかな・・・
524デフォルトの名無しさん
2018/08/04(土) 09:55:58.68ID:2dadGiC9 老人全てが老害になるわけではない
害があるから老害と呼ばれる
害があるから老害と呼ばれる
525デフォルトの名無しさん
2018/08/04(土) 09:59:13.29ID:2dadGiC9526デフォルトの名無しさん
2018/08/04(土) 10:02:32.30ID:F7vd0ILk 数人のグループで開発しているなら、あえてコーディング規約を設けずしても出来るだろうが
100人、1000人規模で開発しているなら、工業製品としての品質管理として必要になるでしょう
100人、1000人規模で開発しているなら、工業製品としての品質管理として必要になるでしょう
527デフォルトの名無しさん
2018/08/04(土) 10:03:35.96ID:pDxZw3/e528デフォルトの名無しさん
2018/08/04(土) 10:08:29.90ID:2dadGiC9 ん?
おれは伝える側の人間だが
おれは伝える側の人間だが
529デフォルトの名無しさん
2018/08/04(土) 10:11:50.81ID:2dadGiC9 100人規模1000人規模のソフト開発で
若者に言語の決定権があるってのは
すごい会社だね
若者に言語の決定権があるってのは
すごい会社だね
530デフォルトの名無しさん
2018/08/04(土) 10:20:39.15ID:+vznLLf6 おかしくはない
好きにやれ動くブツだけもってこい
好きにやれ動くブツだけもってこい
531デフォルトの名無しさん
2018/08/04(土) 10:27:14.97ID:UzBGgsy3532デフォルトの名無しさん
2018/08/04(土) 10:54:42.16ID:VXqPvtUW 出来たばかりの最新規格の機能ならともかく
C++98以前からずーっとある言語の基本機能を大した理由もなく縛ってるのは阿呆でしょ
(「大した理由」があるなら縛ってもいいのよ、本当に大した理由ならな)
C++98以前からずーっとある言語の基本機能を大した理由もなく縛ってるのは阿呆でしょ
(「大した理由」があるなら縛ってもいいのよ、本当に大した理由ならな)
533デフォルトの名無しさん
2018/08/04(土) 11:09:59.74ID:9+U//wQd >>460
横だがDLLにstd::stringとかSTLのオブジェクトを渡したり返したりする設計ェ、、、
std::string程度なら現実には動くが、STLの内部動作のバージョン間の整合を誰も保証してくれない以上、
そういう設計をされるともはや誰も動作を保証できなくなる
STLに限らずOpenCVやCRT絡みのオブジェクトでもそう、
というわけでこういうライブラリのバージョンの統一を担保できない状況ではchar[]の登場と相成りぬ、
横だがDLLにstd::stringとかSTLのオブジェクトを渡したり返したりする設計ェ、、、
std::string程度なら現実には動くが、STLの内部動作のバージョン間の整合を誰も保証してくれない以上、
そういう設計をされるともはや誰も動作を保証できなくなる
STLに限らずOpenCVやCRT絡みのオブジェクトでもそう、
というわけでこういうライブラリのバージョンの統一を担保できない状況ではchar[]の登場と相成りぬ、
534デフォルトの名無しさん
2018/08/04(土) 11:20:42.46ID:Xh+3QD0k char[]を使う関数をDLLにして、その関数をstd::string版関数オーバーロード的なラッパーをヘッダーに記述するでしょ、普通。
というか、std::string専用である必要はなく、template関数にしとけばSTLportだろうかstdだろうかEASTLだろうが対応可能になる。
というか、std::string専用である必要はなく、template関数にしとけばSTLportだろうかstdだろうかEASTLだろうが対応可能になる。
535はちみつ餃子 ◆8X2XSCHEME
2018/08/04(土) 11:23:58.97ID:SzDDeCK/ バイナリでの保証を考えると STL を使いにくいってのは確かにあるよな。
COM のような形式を使えばオブジェクト指向をバイナリレベルで管理することも出来るが、
それはそれで別の規約に縛られてしまうわけで。
どんな規約にするにせよ不満は有るよ。
一貫した規約が無い不満よりは規約に不満を持つ方がマシな世界になりがちなのが現実。
COM のような形式を使えばオブジェクト指向をバイナリレベルで管理することも出来るが、
それはそれで別の規約に縛られてしまうわけで。
どんな規約にするにせよ不満は有るよ。
一貫した規約が無い不満よりは規約に不満を持つ方がマシな世界になりがちなのが現実。
536デフォルトの名無しさん
2018/08/04(土) 11:33:14.55ID:CpwGeL+S そんなもん文字列のポインタ渡せばしまい
頭悪いのって悩む必要がないどーでもいい事で悩むからな
それぞれの完結したモジュールでどのバージョンのSTL使おうが関係ないからな
string ahoをaho.c_str()で渡すだけ
頭悪いのって悩む必要がないどーでもいい事で悩むからな
それぞれの完結したモジュールでどのバージョンのSTL使おうが関係ないからな
string ahoをaho.c_str()で渡すだけ
537デフォルトの名無しさん
2018/08/04(土) 11:50:08.73ID:9+U//wQd538デフォルトの名無しさん
2018/08/04(土) 11:54:01.62ID:CpwGeL+S 頭悪いシロウトほど可変長の文字列クラスをいちいち使いたがるからな
539デフォルトの名無しさん
2018/08/04(土) 11:57:27.88ID:CpwGeL+S もしかしてvectorとかもいちいち自分で全部ラップしってんの
とにかく頭が悪すぎるわ
とにかく頭が悪すぎるわ
540デフォルトの名無しさん
2018/08/04(土) 11:59:57.25ID:9+U//wQd ここで問題なのは可変長の文字列クラスを使いたがる類の素人なのではなくて、
DLLのcallerとcalleeでSTLやCRTのバージョン相違しているケースを想像できない類の素人なのでは…
DLLのcallerとcalleeでSTLやCRTのバージョン相違しているケースを想像できない類の素人なのでは…
541デフォルトの名無しさん
2018/08/04(土) 12:07:08.58ID:CpwGeL+S このスレにいるような知恵遅れがどんな作り方しても
ぜんぜん問題にならない
STL ver baka
void bakabaka(char const* aho_) {
std::string baka("shine");
ahoaho1(baka.cstr());
}
STL ver aho つかったdll
void ahoaho1(char const* aho_) {
}
なにが問題になるわけ?
もうね知恵遅れのいうことは意味が分からないわけ
ぜんぜん問題にならない
STL ver baka
void bakabaka(char const* aho_) {
std::string baka("shine");
ahoaho1(baka.cstr());
}
STL ver aho つかったdll
void ahoaho1(char const* aho_) {
}
なにが問題になるわけ?
もうね知恵遅れのいうことは意味が分からないわけ
■ このスレッドは過去ログ倉庫に格納されています
