[過去ログ]
スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net (1002レス)
スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net http://echo.5ch.net/test/read.cgi/tech/1448685034/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん [sage] 2015/11/28(土) 13:30:34.09 ID:S1e+2GUN スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ 01 http://pc11.2ch.net/test/read.cgi/tech/1167476845/ 02 http://pc11.2ch.net/test/read.cgi/tech/1178503366/ 03 http://pc11.2ch.net/test/read.cgi/tech/1187521676/ 04 http://pc11.2ch.net/test/read.cgi/tech/1221633708/ 05 http://pc11.2ch.net/test/read.cgi/tech/1230516307/ 06 http://pc11.2ch.net/test/read.cgi/tech/1231564903/ 07 http://pc11.2ch.net/test/read.cgi/tech/1232983248/ 08 http://pc12.2ch.net/test/read.cgi/tech/1235921779/ 09 http://pc12.2ch.net/test/read.cgi/tech/1240022781/ 10 http://pc12.2ch.net/test/read.cgi/tech/1242300936/ 11 http://pc12.2ch.net/test/read.cgi/tech/1245059383/ 12 http://pc12.2ch.net/test/read.cgi/tech/1248010352/ 13 http://pc12.2ch.net/test/read.cgi/tech/1260842197/ 14 http://pc12.2ch.net/test/read.cgi/tech/1269273471/ 15 http://pc12.2ch.net/test/read.cgi/tech/1273368706/ 16 http://hibari.2ch.net/test/read.cgi/tech/1279285647/ 17 http://hibari.2ch.net/test/read.cgi/tech/1285115590/ 18 http://hibari.2ch.net/test/read.cgi/tech/1291571263/ 19 http://hibari.2ch.net/test/read.cgi/tech/1308106024/ 20 http://toro.2ch.net/test/read.cgi/tech/1316013463/ 21 http://toro.2ch.net/test/read.cgi/tech/1342285511/ 22 http://peace.2ch.net/test/read.cgi/tech/1399911167/ 23 http://peace.2ch.net/test/read.cgi/tech/1420379468/ http://echo.5ch.net/test/read.cgi/tech/1448685034/1
903: uy ◆e6.oHu1j.o [] 2016/07/03(日) 17:22:48.95 ID:VJyaYSRj >>902 IQ低そう http://echo.5ch.net/test/read.cgi/tech/1448685034/903
904: デフォルトの名無しさん [sage] 2016/07/04(月) 21:04:46.75 ID:/A9poSsO >>901 ttp://www.bohyoh.com/ http://echo.5ch.net/test/read.cgi/tech/1448685034/904
905: デフォルトの名無しさん [sage] 2016/07/04(月) 23:36:10.84 ID:usjNXWI/ >>903 確かに140しかないけどさ http://echo.5ch.net/test/read.cgi/tech/1448685034/905
906: デフォルトの名無しさん [sage] 2016/07/05(火) 00:46:56.32 ID:/sOVcq36 140ってww そんなやつが2chやるわけないだろww http://echo.5ch.net/test/read.cgi/tech/1448685034/906
907: デフォルトの名無しさん [sage] 2016/07/05(火) 15:37:47.81 ID:THFzv4qe 身長の話じゃねーの? http://echo.5ch.net/test/read.cgi/tech/1448685034/907
908: デフォルトの名無しさん [sage] 2016/07/05(火) 22:13:05.66 ID:iT1PYIae チン長かと http://echo.5ch.net/test/read.cgi/tech/1448685034/908
909: デフォルトの名無しさん [sage] 2016/07/06(水) 08:34:12.69 ID:7Bpki8tS 単位はmmか http://echo.5ch.net/test/read.cgi/tech/1448685034/909
910: デフォルトの名無しさん [sage] 2016/07/11(月) 22:20:47.56 ID:2eMs4C3s お前ら的にはアポロ11号のソースコードどうなの? http://echo.5ch.net/test/read.cgi/tech/1448685034/910
911: デフォルトの名無しさん [sage] 2016/07/12(火) 00:30:52.60 ID:8XYiu/ca アセンブラをソースと言っていいのかなって感じ http://echo.5ch.net/test/read.cgi/tech/1448685034/911
912: デフォルトの名無しさん [sage] 2016/07/12(火) 03:46:16.61 ID:N99QS+PT 機械語はコード、それ以外はソース 2005年あたりから増えてきた、高級言語のソースをコードと呼ぶ風潮はうんこだと思うぜ http://echo.5ch.net/test/read.cgi/tech/1448685034/912
913: デフォルトの名無しさん [sage] 2016/07/12(火) 04:41:11.08 ID:Vf+ZIi05 機械語は実行コード それ以外はソースコード http://echo.5ch.net/test/read.cgi/tech/1448685034/913
914: デフォルトの名無しさん [sage] 2016/07/12(火) 07:42:05.35 ID:8XYiu/ca 機械語はバイナリじゃね http://echo.5ch.net/test/read.cgi/tech/1448685034/914
915: デフォルトの名無しさん [sage] 2016/07/12(火) 09:54:08.38 ID:j6bBSSGB >>912 > 高級言語のソースをコードと呼ぶ風潮はうんこ ソースはソースコードの略だからうんこになるほどの問題は孕んでいないと思う。 http://e-words.jp/w/%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89.html > 機械語はコード、それ以外はソース バイナリ(やオブジェクト)とソースという対比で呼ぶべきでは? http://echo.5ch.net/test/read.cgi/tech/1448685034/915
916: デフォルトの名無しさん [sage] 2016/07/12(火) 11:51:57.70 ID:sw++mtzw >>915 そりゃ正式名はソースコードだけど、それを略してコードと呼ぶと意味をなさなくなるんだよ とくに、仮想マシンで動くようなJAVAコード、.Netコードってへっぽこプログラマーが言うじゃん? よく聞いてみると以下略 >バイナリ バイナリ⊃機械語 だね スレ違いなので雑談スレででも http://echo.5ch.net/test/read.cgi/tech/1448685034/916
917: デフォルトの名無しさん [sage] 2016/07/12(火) 12:01:19.42 ID:j6bBSSGB >>916 すまない。915は撤回するわ。 http://echo.5ch.net/test/read.cgi/tech/1448685034/917
918: デフォルトの名無しさん [sage] 2016/07/12(火) 13:12:03.60 ID:bfn2nev7 >>916 普通に英語なんだが coderとは言うけどsourcerとは言わんぞ http://echo.5ch.net/test/read.cgi/tech/1448685034/918
919: デフォルトの名無しさん [sage] 2016/07/12(火) 13:24:32.15 ID:M7aV+wc6 機械語の源(source)となる符号(code)が元の意味だろうから 機械語はコードでしかないが他はソースでもコードでもあるでしょ http://echo.5ch.net/test/read.cgi/tech/1448685034/919
920: デフォルトの名無しさん [sage] 2016/07/12(火) 15:51:05.87 ID:x9hMoHCp コーディング規約とも言うしな http://echo.5ch.net/test/read.cgi/tech/1448685034/920
921: デフォルトの名無しさん [sage] 2016/07/12(火) 17:21:10.48 ID:aYUQCZhN >>912 機械語(machine code)だってプログラム言語のひとつ(machine language) 要するに高水準言語→低水準言語、つまり source code から machine code へ移り変わる中ですべての状態がcodeだと思うよ http://echo.5ch.net/test/read.cgi/tech/1448685034/921
922: デフォルトの名無しさん [sage] 2016/07/12(火) 17:23:58.41 ID:aYUQCZhN 「要するに」って要らなかったな 高水準言語→低水準言語、つまり source code から machine code へ移り変わる中ですべての状態がcodeだと思うよ に訂正 http://echo.5ch.net/test/read.cgi/tech/1448685034/922
923: デフォルトの名無しさん [sage] 2016/07/12(火) 19:10:50.36 ID:OhKVznsb >>916 逆だよ。ソースじゃ通じないがコードなら通じる http://echo.5ch.net/test/read.cgi/tech/1448685034/923
924: デフォルトの名無しさん [sage] 2016/07/13(水) 01:36:17.79 ID:/AeOD/09 >>919 機械語の源じゃなくて、ソフトウェアの源じゃないかな 中間コードはソースとは言わないでしょ http://echo.5ch.net/test/read.cgi/tech/1448685034/924
925: デフォルトの名無しさん [sage] 2016/07/28(木) 11:08:15.39 ID:UbVdigRT Cを一通り終えてC++を勉強してます。 仮想関数という機能の意義というか、利点が分かりません。 そもそも親と違う処理をしたいから、派生クラスで関数を定義しなおすワケですよね? 関数の名前を変えれば済む話、というか、変えるべきなのでは? http://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/virtual.html の 例で言えば、最初から class Clock { void Action_beep() { // 時計がピーピー } }; class LaughClock : public Clock { public: void Action_laugh() { // 時計がケタケタ } }; と定義しておいて、笑いたければ baby.Action_laugh(); で事足りると思うのです。 素人の目からは、異なる処理を行う関数に同じ名前を付けることは、百害あって一利無し、バグを誘発することくらいしか意味がないように思えます。 このサイトでも 「ここで注意していただきたいのは…」 と書かれてますが、注意が必要になったのは、異なる処理に同じ関数名をつけたことが原因ですよね? この欠点を補えるほどの利点て、何かありますか? http://echo.5ch.net/test/read.cgi/tech/1448685034/925
926: デフォルトの名無しさん [sage] 2016/07/28(木) 12:07:53.88 ID:sTpn4H8D >>925 たとえば fwrite() にしたって、呼び出した先では違う処理が動くというのはわかるよな? fwrite_usbmemoryfile() とか、fwrite_ssdfile() なんてものがあったらいやすぎるだろう。 http://echo.5ch.net/test/read.cgi/tech/1448685034/926
927: デフォルトの名無しさん [sage] 2016/07/28(木) 12:18:39.00 ID:6luxzfPz >>925 例えば、アラーム機能を考えると 「設定された時間にビープ」と「設定された時間に笑わせる」と2つの機能を実装するか 「設定された時間に時計の種類を見てビープまたは笑わせる」って機能を実装することになるよね 仮想関数なら「設定された時間に鳴らす」って処理を書いておけば 「鳴らす」部分をビープやら笑わせる機能に差し替えることができる ちゃんと書いとけば「やっぱ振動で」とかそういうのもアラーム機能は修正しなくて済む http://echo.5ch.net/test/read.cgi/tech/1448685034/927
928: デフォルトの名無しさん [sage] 2016/07/28(木) 13:17:17.72 ID:49cPLP5e という机上の空論で作られたのが仮想関数です あまり深く考えず 何かコールバックさせたいときに関数ポインタを隠蔽するために使う と理解しておけば十分であり、問題は起きないです 少なくとも関数ポインタを使うよりは構文になっているという意味で安全 必要でない場合は使わなくてよいです というかなるべく使わないように書くのがテクニックともいえます 制御フローはトップダウンかつ静的になるように心がけましょう http://echo.5ch.net/test/read.cgi/tech/1448685034/928
929: デフォルトの名無しさん [sage] 2016/07/28(木) 13:24:19.32 ID:UbVdigRT 皆様、レスありがとうございます。 せっかく解説してくださったのに、まだ理解できないようです。出来るの悪い子ですみませんorz >>926 私の技量ではうまく言い表せないのですが‥ fwriteはバッファの内容をファイルに書き出すという動作において、プログラムからみれば 書き出し先がUSDでもSSDでも区別が必要ないと思います。 なので単一のfwriteでもOKかな‥と。 ※強いて意識するのはfopen時だけですよね。 Action()はプログラムから処理内容を区別するので、本質が違うような気がします。 >>927 この「差し替え」は機能として理解できるのですが、 関数名から処理内容が一意に決まらなくなる‥という欠点が発生しますよね。 それが利点としてしっくりこないような… それともオブジェクト名まで含めて判断する訓練を積めば克服できるものですかね? 先の例だとclock.Action()ならビープ、 baby.Action()なら笑う、みたいに。 Action()の処理内容が直感的に分かるオブジェクト名をつけないと、いちいち クラス定義まで見返す手間がかえって増えそうな… >>928 > という机上の空論で作られたのが仮想関数です そう言われれば納得できるようなw > 何かコールバックさせたいときに関数ポインタを隠蔽するために使う > と理解しておけば十分であり、問題は起きないです すみません。 初心者にはハードルが高いご解説なため、これからじっくり調べて考えて理解します… http://echo.5ch.net/test/read.cgi/tech/1448685034/929
930: 929 [sage] 2016/07/28(木) 13:38:39.41 ID:UbVdigRT 色々書きミスしてました。申し訳ありません。 誤: 出来るの悪い子ですみませんorz 正: 出来の悪い子ですみませんorz 誤: 書き出し先がUSDでもSSDでも区別が必要ないと思います。 正: 書き出し先がUSBメモリでもSSDでも区別が必要ないと思います。 http://echo.5ch.net/test/read.cgi/tech/1448685034/930
931: デフォルトの名無しさん [sage] 2016/07/28(木) 13:56:36.04 ID:ini9YyYv >>930 > クラス定義まで見返す手間がかえって増えそうな… ちゃうねん 自分で派生クラス作るんやから見返す必要ないねん 蛇口クラスがあって「水圧管理」と「排水機能」を持ってるとするで 基底クラスが上の2つを持ってるわけやな 基本は水で出すとする場合基底クラスのActionが水や けどお湯が欲しくなった場合蛇口は1個しかないから 派生クラスのActionでお湯を出すんや この場合排水する目的は同じで 共通する機能を基底クラスが持ってるわけや 何が出てくるかが違うわけやから何が出てくるのかを自分で定義する 酒好きならシャンパン出してもええねん http://echo.5ch.net/test/read.cgi/tech/1448685034/931
932: デフォルトの名無しさん [sage] 2016/07/28(木) 14:01:51.36 ID:s42UkHaU >先の例だとclock.Action()ならビープ、 baby.Action()なら笑う、みたいに。 >Action()の処理内容が直感的に分かるオブジェクト名をつけないと、いちいち >クラス定義まで見返す手間がかえって増えそうな… baby は LaughClockクラスのオブジェクトだよね? LaughClockクラスのAction()が「笑う」なのは、そんなに変? 変数名の付け方が妥当かどうかは仮想関数とオーバーライドの話とは関係ないけど (関数名の話がオブジェクト名の話にすり替わってる) http://echo.5ch.net/test/read.cgi/tech/1448685034/932
933: デフォルトの名無しさん [sage] 2016/07/28(木) 14:01:53.61 ID:ini9YyYv >>930 関数の名前を変えたのを派生クラスで作ってしまったら 水専用の蛇口からお湯が出たりして苦情くるで http://echo.5ch.net/test/read.cgi/tech/1448685034/933
934: デフォルトの名無しさん [sage] 2016/07/28(木) 14:21:54.16 ID:VDwuXaep 机上の空論ってw C#にもJavaにもあるinterfaceまで空論扱いする勢いだな http://echo.5ch.net/test/read.cgi/tech/1448685034/934
935: デフォルトの名無しさん [sage] 2016/07/28(木) 14:27:37.11 ID:VDwuXaep >>929 >関数名から処理内容が一意に決まらなくなる‥という欠点が発生しますよね。 一意に決めたくないから仮想関数という仕組みがあるんだよ それが何の役に立つのかは実務でソフト組んでれば分かるよ http://echo.5ch.net/test/read.cgi/tech/1448685034/935
936: デフォルトの名無しさん [sage] 2016/07/28(木) 14:29:27.00 ID:DlRIQQvn >>928 >制御フローはトップダウンかつ静的になるように心がけましょう 動的な制御フローってあるん? http://echo.5ch.net/test/read.cgi/tech/1448685034/936
937: デフォルトの名無しさん [sage] 2016/07/28(木) 14:39:37.97 ID:sTpn4H8D >>936 AIは全体で見れば動的と呼んでもいいんじゃ無いか? 同じ入力でも1回目と2回目じゃ結果が異なる可能性もある http://echo.5ch.net/test/read.cgi/tech/1448685034/937
938: デフォルトの名無しさん [sage] 2016/07/28(木) 15:27:25.46 ID:49cPLP5e 彼は自分で言っているように初心者なんだろうけど 初心者ゆえにプログラミングの基本的なスタイルを守っていて それゆえに仮想関数の必要性がわからないのだろう つまり、関数は常に必要に応じて自分で呼び出し プログラミングは自分で流れを作っていくものだと 考えているのだろう その限りにおいては、仮想関数の必要性は無いかもしれない 処理が分岐するならswitchすればよいだろう、位に考えているだろう その初心は忘れないほうが良いと思うが 一度何かのフレームワークを触ってみるとよい 特にラムダがなかった時代の昔のフレームワークは全部仮想関数で解決しようとしていた 猫も杓子も仮想関数で多態が流行った時代があった 君の抜群のセンスなら非常に不毛であると感じるかもしれないが 同時に仮想関数が必要であった理由もわかるはず そのうえで、自分で書く部分(今時プログラムを一から全部書く人はいない)に 俺俺フレームワークを構築するか、しないかは、よく考える必要がある 場面場面で http://echo.5ch.net/test/read.cgi/tech/1448685034/938
939: デフォルトの名無しさん [sage] 2016/07/28(木) 16:51:03.07 ID:UbVdigRT >>938 > 一度何かのフレームワークを触ってみるとよい この一言! 心の琴線に触れる? とはまさにこのことで、分かりました! (というか、分かりかけてきました!) たしかにフルスクラッチでプログラムを作成する状況なら仮想関数を 使わなくても済みそうで、「なぜ重複しない関数名で最初からクラスを設計しないんだろう?」と 疑問だったのですが、それがままならない開発環境もある、ってことですね。 正直、調べても、フレームワークの理解はアバウトなんですが、 それでも関数オーバーライドが必須となりそうな状況は納得できました。 今日を2chで最良の日と心に刻みつけておきます。ありがとうございました。 http://echo.5ch.net/test/read.cgi/tech/1448685034/939
940: デフォルトの名無しさん [sage] 2016/07/28(木) 17:49:20.43 ID:xeepOtn0 >>939 フルスクラッチか既存のライブラリやフレームワークを利用するかというのは重要じゃない インターフェースをどのように設計するかという問題 fwriteの例でいうとFILEという抽象化されたオブジェクトに対してfwriteを実行するだけで オブジェクトの実態がexFAT上のファイルを扱うクラスのオブジェクトなのかNTFSなのか あるいはもっと別のext4とかZFSとか呼び側が気にする必要が無い http://echo.5ch.net/test/read.cgi/tech/1448685034/940
941: デフォルトの名無しさん [sage] 2016/07/28(木) 18:54:53.34 ID:49cPLP5e それは彼の今の認識ではswitchすりゃ良いじゃんってなるんだよ 実際に何かのフレームワークを触って、どういう風に仮想関数が使われているか 見て学んだほうが早いだろう フレームワークのコールバックが関数ポインタかデリゲートかラムダか仮想関数か 何の方式を採用している分からないが、C++のフレームワークなら大概仮想関数だろう 特にフレームワークの場合はフレームワークのメインルーチンを勝手に変更できないという 制限があるので、(ソースコードすらない場合もある) 呼び出し元のコードを変えずに、とか、呼び出し元のコードを一本化して、とか 重要なキーワードを肌で感じることができるだろう switchじゃどうにもならないということも、すぐに理解できるはず あとは自分のプログラムに応用するかしないか、本人次第 一つ言えることは、概念上の問題より、運用上の問題のほうが大事 猫と犬は哺乳類クラスで猫はニャーと鳴き犬はワンと鳴く、とか言ったって これは理解できている人にしかわからない説明なんだよ http://echo.5ch.net/test/read.cgi/tech/1448685034/941
942: デフォルトの名無しさん [sage] 2016/07/28(木) 21:55:49.56 ID:YFw1hd80 エントリポイントとなる関数を用意して その中でifなり何なりで分岐させても、抽象化の目的としては達成されるしなー http://echo.5ch.net/test/read.cgi/tech/1448685034/942
943: デフォルトの名無しさん [sage] 2016/07/29(金) 06:52:14.12 ID:S0Kp402r フレームワーク触るのもいいけど、フルスクラッチの場合も役に立つ 例えばウィンドウシステムの実装 大抵のウィンドウシステムでは、ボタンもダイアログもテキストエリアも同じウィンドウクラスから導出されている なぜなら、マウスで触れる矩形領域の機能としてほとんど同じだからだ ただ、それぞれクリックに対する反応とか表示内容なんかでちょっと違う部分が各部品ごとに山のようにあるので 違う部分だけメソッド(関数)単位で実装してオーバーライドする もし仮想関数を使わずウィンドウシステムを書くことになったら、各部品のちょっと違う部分だけのために部品クラスをコピペで量産しないといけない コピペで量産したクラスの弊害は、また別の話になるけど ところでC++関係なくない? 単純にオブジェクト指向の質問じゃないのか http://echo.5ch.net/test/read.cgi/tech/1448685034/943
944: デフォルトの名無しさん [sage] 2016/07/29(金) 07:43:09.79 ID:S0Kp402r 見直してたら気付いた >もし仮想関数を使わずウィンドウシステムを書くことになったら、各部品のちょっと違う部分だけのために部品クラスをコピペで量産しないといけない 訂正: 各部品のちょっと違う部分だけのためにフル機能の部品クラスをコピペで量産しないといけない 要は差分だけ書けば機能を実現するという目的にも仮想関数は使えるってこった 差分コーディングでググれば色々見られる http://echo.5ch.net/test/read.cgi/tech/1448685034/944
945: デフォルトの名無しさん [sage] 2016/07/29(金) 11:20:59.68 ID:/QPn21bb オブジェクト指向の話どころか、抽象化する意味を聞かれてるのでは? http://echo.5ch.net/test/read.cgi/tech/1448685034/945
946: デフォルトの名無しさん [sage] 2016/07/29(金) 16:20:12.98 ID:QKf643uU 純粋仮想関数により抽象化したクラスはデザインパターンで使う http://echo.5ch.net/test/read.cgi/tech/1448685034/946
947: デフォルトの名無しさん [sage] 2016/08/06(土) 21:21:09.44 ID:CIMwAPv1 class A { public: funcA(); } class B { private A a; } class C { private B b; public: funcC(); }; この状態でfuncCからfuncAを呼ぶには class BにpublicなfuncBを追加してfuncBからfuncAを呼ぶようにする(funcC内でb.funcB) これ以外にスマートなやり方って何かな? 変数はprivate、関数は必要があればpublicやprotectedの方がいいよね? http://echo.5ch.net/test/read.cgi/tech/1448685034/947
948: デフォルトの名無しさん [sage] 2016/08/06(土) 21:25:55.87 ID:NvZG+ERe friend http://echo.5ch.net/test/read.cgi/tech/1448685034/948
949: デフォルトの名無しさん [sage] 2016/08/06(土) 21:34:07.09 ID:ywdq7rGj ものによってはstaticとかでも行けるかも? まあ、スマートっていう意味では、 CからAを触らせないのが一番スマートかもしれんけどね http://echo.5ch.net/test/read.cgi/tech/1448685034/949
950: デフォルトの名無しさん [sage] 2016/08/06(土) 22:03:23.24 ID:wD7Fq13i > まあ、スマートっていう意味では、 > CからAを触らせないのが一番スマートかもしれんけどね 確かにこれが一番スマートやな 他のやり方としてはBのaをprotectedにしてCはBをprivate継承するとかな http://echo.5ch.net/test/read.cgi/tech/1448685034/950
951: デフォルトの名無しさん [sage] 2016/08/07(日) 08:40:15.71 ID:zBYc/KkC >>948-9500 ありがとう! http://echo.5ch.net/test/read.cgi/tech/1448685034/951
952: デフォルトの名無しさん [sage] 2016/08/10(水) 19:58:07.55 ID:oJSizC1Q func()の中でswitch()で分岐してる状態で case 1: 何かやる break; case 2: 何かやる break; func()を書き換えずに何かやる部分をプロジェクトによって変えるような事はできる? http://echo.5ch.net/test/read.cgi/tech/1448685034/952
953: デフォルトの名無しさん [sage] 2016/08/10(水) 20:29:50.53 ID:FPLZcb1n 関数ポインタ仮想関数ラムダ http://echo.5ch.net/test/read.cgi/tech/1448685034/953
954: デフォルトの名無しさん [sage] 2016/08/10(水) 20:31:27.03 ID:DNEsHj4R プロジェクトごとに条件を定義して #define, #ifdef, #ifndef, #else, #endif などで切り替える http://echo.5ch.net/test/read.cgi/tech/1448685034/954
955: デフォルトの名無しさん [sage] 2016/08/10(水) 21:24:43.34 ID:oJSizC1Q >>953 色々あるんだね >>954 プロジェクトが増えるとfuncも書き換えないといけない http://echo.5ch.net/test/read.cgi/tech/1448685034/955
956: デフォルトの名無しさん [sage] 2016/08/11(木) 00:06:31.55 ID:FqLT9pgZ case 1: func_case1(); break; case 2: func_case2(); break; ... とやってプロジェクトごとに異なるfunc_caseXの定義を書けばいいんでは http://echo.5ch.net/test/read.cgi/tech/1448685034/956
957: デフォルトの名無しさん [sage] 2016/08/11(木) 05:28:06.54 ID:Zd798CT0 >>956 > func()を書き換えずに http://echo.5ch.net/test/read.cgi/tech/1448685034/957
958: デフォルトの名無しさん [sage] 2016/08/11(木) 05:29:47.92 ID:Zd798CT0 >>957 って事だから競合起こさないようにした方がよくね? http://echo.5ch.net/test/read.cgi/tech/1448685034/958
959: デフォルトの名無しさん [sage] 2016/08/11(木) 10:12:33.21 ID:xfJcHpdP funcを書き換えずにってのは一度書いたfunc自体のソースだけはどのプロジェクトでも書き換えずに使うって意味じゃないのか http://echo.5ch.net/test/read.cgi/tech/1448685034/959
960: デフォルトの名無しさん [sage] 2016/08/11(木) 11:20:31.32 ID:Zd798CT0 プロジェクト1 func() プロジェクト2 func() ここまでok プロジェクト3 プロジェクト1 func()->func_case1() プロジェクト2 func()->func_case1() どっち呼ぶんや? http://echo.5ch.net/test/read.cgi/tech/1448685034/960
961: デフォルトの名無しさん [sage] 2016/08/11(木) 11:22:12.26 ID:ZnWKVyt1 そういう意味だともうよ だから、関数ポインタ仮想関数ラムダ関数オブジェクト まぁこれはC++での呼び名だが 何らかの方法でコードブロックをコールバックしてもらうしかないと思うよ 一般的によく行われることだし問題ないっしょ http://echo.5ch.net/test/read.cgi/tech/1448685034/961
962: デフォルトの名無しさん [sage] 2016/08/11(木) 13:19:34.88 ID:xfJcHpdP >>960 そのプロジェクト3でfunc()を呼んだらプロジェクト1と2のどっちのfunc()を呼ぶんだ? http://echo.5ch.net/test/read.cgi/tech/1448685034/962
963: デフォルトの名無しさん [sage] 2016/08/11(木) 14:27:00.61 ID:Zd798CT0 >>962 func自体は変更無しなんだから問題じゃなくね? http://echo.5ch.net/test/read.cgi/tech/1448685034/963
964: デフォルトの名無しさん [sage] 2016/08/11(木) 21:21:58.58 ID:TQheNK/m >>960 そのプロジェクトってなんだ? http://echo.5ch.net/test/read.cgi/tech/1448685034/964
965: デフォルトの名無しさん [sage] 2016/08/11(木) 21:39:36.85 ID:GJmRLzEl >>963 プロジェクト1とプロジェクト2でfuncの(最終的な)動作は変わるんだろ その両方の動作を使いたいからプロジェクト3ではプロジェクト1,2両方を取り込んでいるんであって そうしたからには使いたい動作にあわせて意図的に呼び分けができないとだめだろ http://echo.5ch.net/test/read.cgi/tech/1448685034/965
966: デフォルトの名無しさん [sage] 2016/08/12(金) 01:02:36.03 ID:tIcwp4Gc なんで両方の動作を使いたいって話になってるんだ? プロジェクト1でfunc()を呼び出したらプロジェクト1のfunc_caseXXX()が呼ばれる プロジェクト2でfunc()を呼び出したらプロジェクト2のfunc_caseXXX()が呼ばれる プロジェクト3でfunc()を呼び出したらプロジェクト3のfunc_caseXXX()が呼ばれる プロジェクトがいくら増えてもfunc()の中身自体は修正を必要としない ということがやりたいんだろ?>>952は http://echo.5ch.net/test/read.cgi/tech/1448685034/966
967: デフォルトの名無しさん [sage] 2016/08/12(金) 08:55:39.80 ID:V4dr4yFb >>965 プロジェクト3ではプロジェクト1と2の両方のfunc_case呼ぶってなんで? プロジェクト3専用のfunc_caseだろw http://echo.5ch.net/test/read.cgi/tech/1448685034/967
968: デフォルトの名無しさん [sage] 2016/08/12(金) 10:09:26.57 ID:A6nfo0WT >>956,966,967のやり方じゃだめだって>>957=958=960=963が>>960で例を出して言ってるんだろ で>>960の例にはfuncの中身以前に問題があるんじゃないのという疑問だろ http://echo.5ch.net/test/read.cgi/tech/1448685034/968
969: デフォルトの名無しさん [sage] 2016/08/12(金) 12:00:33.75 ID:tIcwp4Gc >>968 つまりどういうこと? http://echo.5ch.net/test/read.cgi/tech/1448685034/969
970: デフォルトの名無しさん [sage] 2016/08/12(金) 12:28:25.41 ID:V4dr4yFb >>968 >>967ではむしろ>>965を否定したつもりなんだが http://echo.5ch.net/test/read.cgi/tech/1448685034/970
971: デフォルトの名無しさん [sage] 2016/08/13(土) 09:29:25.77 ID:ShTSXbfa pを使った処理はAとBどっちに書くのがセオリ? try { p = new int; // A } catch() { // 失敗時の処理 return; } // B http://echo.5ch.net/test/read.cgi/tech/1448685034/971
972: デフォルトの名無しさん [sage] 2016/08/13(土) 11:58:33.65 ID:xf3MhneS 書き手がなにを重視しているかの視点・哲学の話だからどっちでもいい http://echo.5ch.net/test/read.cgi/tech/1448685034/972
973: デフォルトの名無しさん [sage] 2016/08/13(土) 12:22:48.55 ID:zvhXM4IK その「pを使った処理」で発生した例外をそのcatchで捕まえたいかどうか次第じゃないかと。 http://echo.5ch.net/test/read.cgi/tech/1448685034/973
974: デフォルトの名無しさん [sage] 2016/08/13(土) 12:37:38.79 ID:ShTSXbfa つまり 例外が発生する処理を1つのtryブロックでまとめるか 処理毎にtryブロックを用意するかの違いって事かな try { p = new int; /* pを使った処理 */ q = new int; } catch() { return; } try { p = new int; } catch() { return; } // pを使った処理 try { q = new int; } catch() { return; } こんな感じ? http://echo.5ch.net/test/read.cgi/tech/1448685034/974
975: デフォルトの名無しさん [] 2016/08/13(土) 12:49:18.79 ID:sDKArTxu 全部間違いcatch()なんてコンパイル通らないし そもそもそんなところでnewなんて使うな http://echo.5ch.net/test/read.cgi/tech/1448685034/975
976: デフォルトの名無しさん [sage] 2016/08/13(土) 13:11:33.14 ID:woc51egB try-catchもなんだかんだで行数食うし、 どうしても分離できないところ以外は、なるべくまとめた方が良さげ http://echo.5ch.net/test/read.cgi/tech/1448685034/976
977: デフォルトの名無しさん [sage] 2016/08/13(土) 13:27:50.95 ID:ShTSXbfa >>975 突っ込むなら本題でつっこんでくれ 例に対して的外れな突っ込みになってるぞ >>976 そういうもんなんだな http://echo.5ch.net/test/read.cgi/tech/1448685034/977
978: デフォルトの名無しさん [] 2016/08/13(土) 13:35:00.47 ID:sDKArTxu >>977 本題?そんなものにセオリなんてないというのが答え そもそも「pを使った処理」の内容が分からないのに http://echo.5ch.net/test/read.cgi/tech/1448685034/978
979: 976 [sage] 2016/08/13(土) 13:41:10.91 ID:woc51egB ごめん>976の日本語おかしかった 誤: どうしても分離できないところ以外は 正: 本当は分けてcatchしたいのに、まとめてtryブロックに突っ込むと そのままでは例外クラスの関係でまとまってしまう(分離に一手間かかる)ところ以外は どうやら脳内補完してくれたみたいで、感謝 >>977 あくまで個人的な見解なので、メリット・デメリットはあると思う tryブロックが長すぎても大変だろうしね http://echo.5ch.net/test/read.cgi/tech/1448685034/979
980: デフォルトの名無しさん [] 2016/08/13(土) 13:56:22.46 ID:sDKArTxu 何を大変がってるのか理解不能 最初からnew intなんて馬鹿なことしなけりゃいいのに http://echo.5ch.net/test/read.cgi/tech/1448685034/980
981: デフォルトの名無しさん [sage] 2016/08/13(土) 14:04:27.20 ID:woc51egB >>980 例文としてnew intを使ったのは質問者で(さらにその例文には特に意味もない) 「大変」という言葉を使ったのは質問者じゃなく俺(>979)なわけだが 一体誰に何をレスしてるんだ? http://echo.5ch.net/test/read.cgi/tech/1448685034/981
982: デフォルトの名無しさん [sage] 2016/08/13(土) 14:07:57.10 ID:ShTSXbfa >>979,981 そうだなありがとう 煽りたがりなんだよたぶん >>980 最初から的外れな指摘しなけりゃいいのに http://echo.5ch.net/test/read.cgi/tech/1448685034/982
983: デフォルトの名無しさん [sage] 2016/08/13(土) 14:08:54.05 ID:ShTSXbfa >>972-973もアンカ付けてなかったけどありがとね http://echo.5ch.net/test/read.cgi/tech/1448685034/983
984: デフォルトの名無しさん [] 2016/08/13(土) 14:09:23.19 ID:jehnS6hp まあ、あれだ。 いつもの「空気の読めない君」が登場しただけだから気にするな。 質問者の意図が理解できずに、会話にならないアの字の人が一人か二人いる。 http://echo.5ch.net/test/read.cgi/tech/1448685034/984
985: デフォルトの名無しさん [] 2016/08/13(土) 14:19:57.80 ID:sDKArTxu >>981 両方にレスしてる >>971の「pを使った処理」をBに書いてもいいなら、「pを使った処理」では例外が発生しないものとしていいんだよな? だったらどっちでもいいし newでbad_alloc発生するかもしれないし「pを使った処理」で別の例外が発生するかもしれないよ。どうしたらいいの(泣) ってことなら まとめたとしても catch(bad_alloc e) { return; } catch(...) { delete p; return; } とでもすればいいだけだし議論するようなことじゃない catch()とか書いてる時点でC++の例外処理について何もわかっていないんじゃないかと そもそもnew失敗時にreturnって何をしたいのか意味不明なんですけどね(笑) http://echo.5ch.net/test/read.cgi/tech/1448685034/985
986: デフォルトの名無しさん [] 2016/08/13(土) 14:29:14.04 ID:sDKArTxu >>984 出た「空気読め」 無能はいつだってこうだね しまいには「ア」呼ばわりして勝利宣言w http://echo.5ch.net/test/read.cgi/tech/1448685034/986
987: デフォルトの名無しさん [sage] 2016/08/13(土) 14:39:41.75 ID:ShTSXbfa >>985 catchした場合はBの処理はされないという意味のreturnなんだが読み取れなかったか? それともわざわざ「catchブロックはこの際重要ではない」と書けばよかったか? 引っ込みがつかなくなって狂っただけか? http://echo.5ch.net/test/read.cgi/tech/1448685034/987
988: デフォルトの名無しさん [sage] 2016/08/13(土) 14:46:10.18 ID:ShTSXbfa >>985 途中送信失礼 お前がやってる的外れな指摘はこういう事なんだがわかるかな? catch(const bad_alloc &e)だろ そこは今重要じゃないだろ? http://echo.5ch.net/test/read.cgi/tech/1448685034/988
989: デフォルトの名無しさん [] 2016/08/13(土) 15:49:08.98 ID:SZzp1Vb3 はぁ、、、勝利とか何の話なのかな? 議論に勝ち負けがあると思ってる時点でちょっと斜め上。 http://echo.5ch.net/test/read.cgi/tech/1448685034/989
990: デフォルトの名無しさん [sage] 2016/08/13(土) 18:35:59.65 ID:OPjVywq7 回答者同士で煽りあってるのかと思えば質問者と回答者だったのか どっちがセオリーというかpを使った処理次第だし失敗時の処理次第ってところでどっちもあり >そもそもnew失敗時にreturnって何をしたいのか意味不明なんですけどね(笑) Bの場合に例外を飛ばさずに処理を終了させたい(Bを実行しない)ってことだろ http://echo.5ch.net/test/read.cgi/tech/1448685034/990
991: デフォルトの名無しさん [sage] 2016/08/13(土) 23:39:33.39 ID:CLd1bccm ループ展開やブロッキングのような最適化手法って他にありますか? あと並列化特有の最適化の方法とかがあるなら教えて下さい http://echo.5ch.net/test/read.cgi/tech/1448685034/991
992: デフォルトの名無しさん [] 2016/08/14(日) 00:04:41.36 ID:z6U1tRVC 次スレ http://echo.2ch.net/test/read.cgi/tech/1471100645/ http://echo.5ch.net/test/read.cgi/tech/1448685034/992
993: デフォルトの名無しさん [sage] 2016/08/14(日) 18:24:32.93 ID:DuaY2f9q >>991 OpenMPの話? http://echo.5ch.net/test/read.cgi/tech/1448685034/993
994: デフォルトの名無しさん [sage] 2016/08/15(月) 10:29:06.41 ID:SYEcbM5V コンパイラがC/C++ならOpenMPの話しはここでもいいんじゃないかな レスが付くかどうかはわからんが >>991 wikipediaで"コンパイラ最適化"で項目があるから、ざっくりとわかるとおもう http://echo.5ch.net/test/read.cgi/tech/1448685034/994
995: デフォルトの名無しさん [sage] 2016/08/15(月) 10:39:36.48 ID:4wJ3nkHn >>993 >>994 openMPに限らず他に最適化手法が無いかなと思って聞きました 見たところwikiにもいろいろ載ってました ありがとうございます http://echo.5ch.net/test/read.cgi/tech/1448685034/995
996: デフォルトの名無しさん [sage] 2016/08/15(月) 15:16:30.69 ID:ZZZ997rF 隔離病棟って何だよ http://echo.5ch.net/test/read.cgi/tech/1448685034/996
997: デフォルトの名無しさん [sage] 2016/08/15(月) 15:32:27.02 ID:ywF/52Nh 俺の家だよ http://echo.5ch.net/test/read.cgi/tech/1448685034/997
998: デフォルトの名無しさん [sage] 2016/08/15(月) 19:11:52.07 ID:bftlQCDN 独り占めすんなよ。 「俺たちの家」と言うべきだろ。 http://echo.5ch.net/test/read.cgi/tech/1448685034/998
999: デフォルトの名無しさん [sage] 2016/08/15(月) 19:14:58.12 ID:E6/w/wVK ナース服来たメイドさんうらやま http://echo.5ch.net/test/read.cgi/tech/1448685034/999
1000: デフォルトの名無しさん [sage] 2016/08/15(月) 19:20:16.07 ID:ZZZ997rF 梅酒 http://echo.5ch.net/test/read.cgi/tech/1448685034/1000
1001: 1001 [] Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。 life time: 261日 5時間 49分 42秒 http://echo.5ch.net/test/read.cgi/tech/1448685034/1001
1002: 1002 [] Over 1000 Thread 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 2ちゃんねる専用ブラウザからの広告除去 ★ 2ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ http://premium.2ch.net/ http://pink-chan-store.myshopify.com/ http://echo.5ch.net/test/read.cgi/tech/1448685034/1002
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.024s