1 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:53:02.14 ID:FOAGvAbs.net] 次スレを立てる時は本文の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】 mevius.5ch.net/test/read.cgi/tech/1509780815/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) ----- テンプレ ここまで ----- VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
669 名前:同じコンセプトで書き直したほうがいいカモだけど。 githubはソース置き場にしてるだけからgitの操作さっぱりわからん・・・。Orz [] [ここ壊れてます]
670 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 03:17:37.39 ID:rT8gQk9M.net] >>644 URLサンクス もしかしてサイズ取れないと言うことだろうか
671 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 03:47:22.54 ID:B+R4+INY.net] 左様そう考えて差し支えない ID:rT8gQk9M は近隣住民の安全のために、BSTRをもたず、つくらず、もちこませずを堅持すること
672 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 03:49:46.96 ID:p9jfuJcV.net] https://ideone.com/eDOvCH これで、Next保存する方法ないですか? ダイナミックキャストだけかな? 継承したら自分の型忘れるのホント面倒。
673 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 03:49:53.40 ID:beAAeNyA.net] >>645 乙
674 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:01:00.88 ID:B+R4+INY.net] >>648 保存(シリアライズ)のインターフェースをBaseに持たせてNextでNextの保存処理を実装したらいいんじゃね
675 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:06:44.82 ID:p9jfuJcV.net] >>650 ゴメン。ちょっと舌ったらずだった。 各クラスが持ってるTypeに自分の型を保存する方法ないですか? 継承して記憶喪失になっても復元できるようにしたいのです。 システム内でちょくちょく必要になるのは俺がタコだからなんだろけど。 もちろん、ユーザーコードには見せないようにしますよ。
676 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:18:39.10 ID:B+R4+INY.net] 型を知りたいというならdynamic castが一番可搬性が高いやり方だと思うが 型を知りたいだけ、なんてことがあるのかどうなのか 普通はダウンキャストしたいという要求とセットのはずで、 ダウンキャストはインターフェースをゼロから周到に設計すればポリモーフィズムで解決できる 再設計をゼロからやれないときだけがdynamic_castの出番、という印象 ※ 個人の感想です
677 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:35:15.48 ID:p9jfuJcV.net] static_cast<DeleteAster<decltype(p)>::OldType*>(p)->OldTypeMethod(); 的なことをやりたいのですよ。 システム制作者が完全に意思疎通してて型がどうなってるか周知って前提なんだろうけど、 継承したものをごっちゃにコンテナに入れたら破綻するんだよなぁ。。。 anyもいいなぁと思ったけど、結局キャストする手間は変わらない。むしろキャスト必須。 なくても何とかなるけど、余計なコード書かないといけないからスマートな方法ないもんかなぁ、と。
678 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:38:40.37 ID:p9jfuJcV.net] 動的に型を保存する型がほしい。
679 名前:さまよえる蟻人間 mailto:sage [2018/08/10(金) 04:42:20.85 ID:KaDy9gZn.net] スクリプトすればぁ〜?
680 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:45:12.86 ID:p9jfuJcV.net] ですよねぇ。。。はう。
681 名前:さまよえる蟻人間 mailto:sage [2018/08/10(金) 04:50:41.18 ID:KaDy9gZn.net] usingとかtypedefとかtype traitsとかautoとか使へば、何とかできる気もするが、 さういうコードをなかなか書けぬ人はスクリプト言語へ行くへし。
682 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:58:16.48 ID:p9jfuJcV.net] rustがレールに乗ればなぁ。 そういえば、anyはtype_infoを返すメソッドがあるのでので動的にチェックができるみたいだねぇ。 ないよりましだけど、確率になっちゃう。ぐぬぬ。 >>657 そうそう、できそうな気はするんだよね。うーん。。。
683 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 05:13:40.93 ID:B+R4+INY.net] >>657 ID:p9jfuJcVの悩みはコンパイル時に解決できないからusingとかtypedefとかtype traitsとかautoでは_ぽ (Base* pを扱うコードのビルドでコンパイラが常に*pの型がNextであることを見抜いたり、Nextの詳細を見通せたりするわけではない というわけでポリモーフィズムでしか解決できん ID:p9jfuJcVは、クラスごとに異なるOldTypeMethod()を呼び出すインターフェースCallOldTypeMethod()を設けて BaseやNextそれぞれ毎に、適切なOldTypeMethod()を呼び出す実装を与えなさい ※ 個人の感想です
684 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 05:52:46.45 ID:d4sNno4d.net] 実行したいこととオブジェクトの型が一対一対応であるという保証はない。 C++固有のポリモーフィズム機能を使うと他の言語に移植できなくなる。 実行したいことを列挙型なりビットフラグのメンバ変数として保存しておくのが一番楽だろう。
685 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 05:53:49.02 ID:0eRJE2kB.net] テンプレートでダックタイピング的なことをするとか
686 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 05:59:59.43 ID:d4sNno4d.net] 追記。 やりたいことが1種類だけなら型と紐づいていても問題ないが、 やりたいことが複数の組み合わせになったら型と紐づいた設計は破綻する。 何がいいたいかというと、アキラメロンということだ。
687 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 06:38:46.33 ID:p9jfuJcV.net] 皆さまありがとうございます。無理ぽいことがよくわかりました。 >>659 うーん。 仮想関数との違いがよくわからないなぁ。 プロキシ―オブジェクトってことなんだろうけど。 うーんと、ほしいときって初期化タイミングの調整とかそのへんなのでメインレールはインターフェースでいいんだよなぁ。 どうしてこう融通が利かないのか。設計のせいか・・・Orz >>660 結局そういうことになるんですよねぇ。。。うーん。 >>661 コンセプトがいるような気がする。 さっき上げたコードをテンプレートとanyで書けば同じようなことはできるけど、エラー吐いたら地獄な気がする。 でも、そっちの方が高機能かもしれんなぁ。anyのキャスト問題を除けば。
688 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 06:40:45.22 ID:p9jfuJcV.net] とりあえず、お付き合いいただきありがとうございました。 今日は寝ます。また。
689 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:05:11.27 ID:f/eWc4F9.net] Unicodeの時はwchar_t、マルチバイトのときはcharとして扱ってデータをコピーしたい その切り替えを処理途中にifdef入れまくるのは不適切だと思うからdefineかtypedefを一度することによって 自動で切り替えられるようにしたいけどtypedefだとできない? #ifdef unicode #define tlen wcslen #else #define tlen strlen #endif int main () { TCHAR a; int size = tlen(a); }
690 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:07:47.43 ID:iZqKv3XP.net] コピーだけなら簡単
691 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:10:21.06 ID:f/eWc4F9.net] >>666 コピー以外も色々と
692 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:19:12.22 ID:iZqKv3XP.net] 色々と じゃ答えようが無い
693 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:19:41.44 ID:iZqKv3XP.net] 色々と 頑張ってね
694 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:31:58.40 ID:d4sNno4d.net] >>665 以下のようなwchar_t, char に応じたオーバーロード関数もある。私は使わないけど。 std::char_traits::length(const T* s)
695 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:31:58.98 ID:PNfVMsqd.net] 色々と間違ってる
696 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:33:16.73 ID:X/p1NsAX.net] コンパイル時に決まってるならテンプレートにすればいい
697 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:40:29.94 ID:f/eWc4F9.net] >>668 文字列長を求める データコピー Stringstream
698 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:44:16.79 ID:f/eWc4F9.net] >>670 これだとLengthに特化したやつだけになるのかな? 他にもあるので切り替え方法が知りたく >>672 コンパイル時には決まってます テンプレートを作成するってのはT型を作るってことかな?
699 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:46:33.59 ID:uYApHCeM.net] クラスのインスタンスのコピーさせない方法ってコンストラクタにdeleteをつけるだけで実現可能? それとも違うんかね? 参考を探していてもデフォルトコンストラクターにつけているだけで 複数のコンストラクターがある場合とかがわからない
700 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:59:27.52 ID:iZqKv3XP.net] コピーコンストラクタとoperator = をprivateにして 関数の実体も作らない
701 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 08:15:19.60 ID:cglfv0MQ.net] 今は=deleteも出来るぜ。
702 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 08:48:18.73 ID:uYApHCeM.net] privateにすることでできそう ありがとう
703 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 08:49:25.57 ID:a+3O8uOm.net] C
704 名前:++極める方法教えてよ [] [ここ壊れてます]
705 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 08:53:13.90 ID:FVsJ4La+.net] STLの仕様を見ます 自分で実装します ソースコードをみて答え合わせをします まずはvectorから、ハイ、どうぞ
706 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:02:52.19 ID:I9yy5anA.net] 高位合成toolを入手します。 あなたの思った通りの動きをするCPUを作れば完成
707 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:44:57.66 ID:UZimlLTI.net] CreateProcess失敗したときのhProcessに何が入るか記載しておいてよmsdn NULLなの!?それとも別なの!? msdn使いこなせるやつすげぇよ本当に
708 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:51:57.65 ID:I9yy5anA.net] そんな引数無い事について以下100レス程
709 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 10:25:12.98 ID:NKvoiPPS.net] >>670 char_traitsの関数はオーバーロードじゃねえだろ 引数ではなくスコープで区別するんだから
710 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 12:02:09.34 ID:d4sNno4d.net] >>684 スコープ?
711 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 12:20:52.35 ID:LvXbuhRM.net] >>683 CreateProcess()使ったことあれば lpProcessInformation.hProcess ってわかると思うが… >>682 何も書いてない → 何が入っているかわからない ってことだろ
712 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 12:21:22.72 ID:nFJe7QfE.net] >>675 https://cpprefjp.github.io/lang/cpp11/defaulted_and_deleted_functions.html
713 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 13:06:07.39 ID:I9yy5anA.net] >>686 HANDLEならINVALID_HANDLE_VALUEがデフォでしょ
714 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 14:25:58.73 ID:NKvoiPPS.net] >>685 std:char_traits<char>::length(const char*) std::char_traits<wchar_t>::length(const wchar_t*) こういう関数の選択は引数によらない wchar_t x[2]; std::char_traits<char>::length(x); //error
715 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 14:45:17.93 ID:LvXbuhRM.net] >>688 だからそんなことを期待しちゃダメってこと
716 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 15:10:51.55 ID:ayqbPQA0.net] >>689 wchar_tを使うとわかっていてテンプレート引数にcharを入れるのはおかしくない?
717 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 18:49:42.52 ID:hMB1uQwa.net] >>682 関数が失敗したら新しいプロセス自体作れられないんだから hProcessが不定でも何も困らないと思うが
718 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 18:53:21.62 ID:NKvoiPPS.net] >>691 std::char_traits::length(x); //error
719 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 19:18:52.44 ID:7XXHmUWL.net] おまいらコミュ障かよ
720 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 19:19:41.62 ID:JXFPQdyt.net] std::char_traits<wchar_t>::length(x);//0
721 名前: mailto:sage [2018/08/10(金) 19:23:47.91 ID:H9lF8aPc.net] >>680 >まずはvectorから、ハイ、どうぞ これ、いちどやってみたいですね… https://mevius.5ch.net/test/read.cgi/tech/1434079972/33
722 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 21:04:31.61 ID:U4E1U51M.net] このメンツで開発とか地獄だろうな。。
723 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 08:11:36.74 ID:dFDFw6X4.net] ガイジしかおらんやんけ…
724 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 11:00:44.96 ID:X6Hz/xY3.net] char_traitsの件、どうも話通じてないなあ
725 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 11:25:54.74 ID:4zfRZVUI.net] 多重定義, オーバーロード - Wikipedia https://ja.wikipedia.org/wiki/%E5%A4%9A%E9%87%8D%E5%AE%9A%E7%BE%A9 質問者が解決の糸口を見つけられればそれでいい。 >>684 のような間違った用語定義を主張して、何の生産性にも貢献しない ID:NKvoiPPS みたいな人は迷惑。
726 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 12:18:16.68 ID:X6Hz/xY3.net] >>700 Wikiより規格票な N3337 13 Overloading [over] When two or more different declarations are specified for a single name in the same scope, that name is said to be overloaded. JIS X3014:2003 13. 多重定義 同じ名前を指定した異なる宣言が同一有効範囲内に複数ある場合,その名前は,多重定義されているという。 言わんでも解るだろうから、説教臭いことはあえて黙っておく
727 名前:はちみつ餃子 mailto:sage [2018/08/11(土) 13:37:39.73 ID:zO3XAoAm.net] たしかに >>670 のいう「オーバーロード」は用語の使い方が誤っているが、 それはそうとしてオーバーロードっていう言葉の中にバーローという言葉が入ってるから、 オーバーロードの話題が出るたびに俺の中のコナン君がバーローとささやくので、 お前らにも同じ呪いをかけてやろう。
728 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 13:41:08.56 ID:xFvEQmr2.net] 真実はいつも多重定義されない!
729 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 13:43:33.49 ID:xFvEQmr2.net] std::char_traits<char>::length()と std::char_traits<wchar_t>::length()は 互いに同じ名前(a single name)なんやろうか…
730 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 15:53:50.27 ID:xFvEQmr2.net] >>663 >どうしてこう融通が利かないのか。設計のせいか・・・Orz ユーザーコードにクラスの中で定義された型(Base::TypeやNext::Type)を見せるのはやめて、 NextやBaseのオブジェクトのふるまいとしてだけ見せたら宜しいかと ふるまいだけを見せる抽象化はまず純論理的にはポリモーフィズムで逝ける 次の段階として、呼び出しの度にvtblの間接参照が一発入る遅さを嫌い、高速化したいという要求が生じるかもしれないが そのときは知らん(テンプレートによるダックタイピングでさらに戦うこともできるが同一翻訳短以内でのcloseが前提でありかつクラスの継承の恩恵にはなかなかあずかれない
731 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 15:58:27.82 ID:xFvEQmr2.net] なおふるまいだけを見せる抽象化ができないオブジェクト指向言語とか無いから他言語への移植性とかを気にするのは狂気の杞憂 ていうか非オブジェクト指向言語であっても関数ポインタと構造体が使えれば似たようなことはいつでもできる
732 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 18:59:43.05 ID:X6Hz/xY3.net] 非オブジェクト指向言語とオブジェクト指向言語で 最終的に作れるものと作れないものは その違いによる差は全くないんだが
733 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 22:22:49.51 ID:xFvEQmr2.net] ちな>>707 は、>>660 へのレス。
734 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 22:42:05.15 ID:4zfRZVUI.net] 技術系の板でID使い分けする惨めさよ
735 名前:707 mailto:sage [2018/08/12(日) 07:44:03.92 ID:2Xoj+DoI.net] 俺の偽物がいるな
736 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 20:13:35.92 ID:KnTIebYQ.net] レイトレーシングをやってみたいんですけど、何もない状態から画像を生成するのと、画像処理(opencv)でやろうと思ってます。 前者と後者とも資料は見つけたのですが、どうやって勉強するのがおすすめですか? opencvで例えばアイドルの画像をCGっぽく、またはアニメっぽくはできたりするのでしょうか?
737 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 22:21:45.58 ID:MDfKI+a6.net] >>711 多分君には無理だからそういったアプリを探しなさい 煽りでも何でもなく実力不足
738 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 23:17:59.82 ID:RJjtK8Ko.net] >>711 レイトレーシングの本質は三次元空間での光の挙動のシミュレーションであって 既存の画像を加工するような技術じゃないぞ
739 名前:デフォルトの名無しさん [2018/08/13(月) 00:27:19.20 ID:p4qIMBze.net] Late racing.
740 名前:デフォルトの名無しさん [2018/08/13(月) 00:28:37.24 ID:p4qIMBze.net] 視線の追跡したほうが効率よさそうな気がする。 目に入らない光は無いも同然だし。
741 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:31:27.67 ID:sn7iPKpv.net] 一番シンプルなレイトレの実装は視線追跡だからな
742 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:33:31.73 ID:sn7iPKpv.net] >>716 寝ぼけて謎な用語の用法をしてしまった忘れてくれ 視線側からのレイの追跡だ
743 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:36:44.24 ID:XxWurSAu.net] トイレの覗きかと一瞬勘違いしましたw
744 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:43:21.17 ID:MxL7CAkg.net] ちゃんとミラーボールの映像から抽出しないと
745 名前:デフォルトの名無しさん [2018/08/13(月) 01:42:46.41 ID:+YkMTMKz.net] 遠い昔だが、いい基礎解説本があったんだがタイトルが思い出せない 98用のCのソースコードも附録でついてた 98なんかもってなかったから、Xlibで動かした記憶がある その書籍はサーフェイスモデルもレイトレーシングも基礎から丁寧に書いてある良書だった サーフェイスモデルについては、ものすごい力を入れて書かれてた良い本だった ワイヤーフレームから陰面消去、さらに双三次スプラインでの補間、そしてレンダリング、バンプマッピング さらに3次アフィン変換つかってモーションキーで動くとこまで解説してる 基礎で必要な内容は、ほぼすべて網羅されてて、バカでもチョンでも分かるように書かれてた で、レイトレーシングはサーフェイスモデルより超簡単だからな このスレのアホが難しいといってるだけで むしろレイトレーシングはバカでもチョンでも分かる
746 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 01:48:30.63 ID:GxmByJ3O.net] せっかく良い質問なのに、 あまり汚い言葉で、アホとかバカとかチョンとか言わなない方がいいよ…
747 名前:デフォルトの名無しさん [2018/08/13(月) 02:07:33.90 ID:Zz4bK/+7.net] レイトレならこれもおすすめ https://qiita.com/mebiusbox2/items/89e2db3b24e4c39502fe
748 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 02:52:34.70 ID:J+SKK2b0.net] Oh!Xにソース付きで事細かく書いてあってだな
749 名前:デフォルトの名無しさん [2018/08/13(月) 03:13:41.34 ID:bfksj/4u.net] 多分これだと思う https://www.amazon.co.jp/dp/4871481999 3冊とも名著。1と2はBASICだけど
750 名前:デフォルトの名無しさん [2018/08/13(月) 03:39:58.88 ID:p4qIMBze.net] レイトレーシングに限らないけど、アルゴリズムの勉強にはLinuxが良いですよ。
751 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 04:00:12.36 ID:3+Hm6Wut.net] 紹介されてる本全部古い... linuxだと何がいいの?
752 名前:デフォルトの名無しさん [2018/08/13(月) 04:14:38.66 ID:p4qIMBze.net] Kernelソースが勉強になります。
753 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 04:15:34.47 ID:J+SKK2b0.net] openclとグラボの勉強したら? レイトレーシングの大量の計算するのがグラボでしょ
754 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 06:59:52.73 ID:k7xD/gvg.net] >>724 アスキーの『応用グラフィックス』か。入門・実習・応用の3冊シリーズだね。 各巻のつながりは緩いから順番に読まなくてもほぼ大丈夫だけど。 確かに良い本だった気がするけど、なにぶん読んだのが昔なんで いくらも理解できなかったわ。今ならもう少しマシだと思いたい。 大学近くの古本屋でなら見つかるかも。
755 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 07:05:01.34 ID:JKsq+WjD.net] 畏(おそ)れ多くも森喜朗元帥閣下の有り難いお言葉: 「オレはIT(いっと)のことはよく知らんがぁ 時計をたった2時間早めるだけだろぉ? オレなら1分あれば済ませるぞぉ! サマータイムの何がそんなに難しいんだぁ?」 システム開発現場の勇ましい言葉: 「畏れ多くも森元帥閣下のご下命を賜った以上 現場SEは有り難いお言葉に勇気百倍 デスマーチとバンザイ突撃を敢行いたします!」 「マラソン選手さまが涼しい時間に走るためなら 現場SEの千人や二千人死んでも本望です! 私たちSEの生命など、虫けらと同じです!」 「畏れ多くも森元帥閣下の有り難いご下命にしたがって 最前線システム開発現場で殉職出来るとしたら 現場SEとしてこれに勝る喜びはありません!」 日本という国では 体育会系が一番偉い(森元帥閣下、田中理事長) 文科系がその次で(財務省、教授会) 理科系は最底辺の奴隷とされています(現場SE)
756 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 07:26:44.37 ID:WtSMvp2C.net] レイトレーシングがサーフェイスモデルより簡単とか 半透明物体内部の散乱表現に踏み込んだらそんな寝言は言えないんじゃ…
757 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:07:11.78 ID:uSgRX9ke.net] みんな例外と戻り値ってどう使い分けてる? 例えば以下みたいな、ファイルからとある要素を抜き出して返す関数とかで std::string extractHogeFromFile(const std::string& file_path) 俺だったら以下みたいにしてるけど、いまいちしっくり来てないとも思ってる ファイルが見つからない→例外 要素が見つからない→例外 要素が見つかるけど空→空 みんな例外クラスとかはstd::exception継承して自作してるのかな? バックトレースやコード行数とれないのが使いにくくて、javaっぽい例外クラスを自作してる
758 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:16:27.95 ID:Z0vFISs/.net] 例外は発生時の動作が遅い
759 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:17:50.65 ID:gsTSbRo/.net] exceptionを直に継承ということは滅多にないな system_errorがあるからerror_categoryの派生クラスを作れば大抵足りる __FILE__ や __LINE__ のようなデバッグ情報を入れたくてマクロを作ることはあるけどね 空という概念ならoptionalはいかが? template <typename ELEMENT> std::optional<ELEMENT> extractHogeFromFile(std::path) noexcept(false);
760 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:36:14.97 ID:uSgRX9ke.net] >>733 発生時は確かに遅いね ただ、あくまでも例外的なものだけに利用をとどめておけば、そんなに発生するものでもないし、その場合は戻り値をifで見るより命令数が少なくなるから、結果的に高速になるって俺は考えてる >>734 exception直に継承も少し疑問もってるんだけど、std::exceptionのcatchで全部取りやすいからこうしてるんだよね ...でcatchは乱暴な気がするし ただ、調べて見た感じsystem_errorも使いやすそうね。最近開発で使えるようになったC++11だからこんなのあるの気づいてなかったわ std::optionalとかあったんだね、ちょっと調べてみるわありがとう
761 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 11:20:33.79 ID:NtbFT1j9.net] >>720 レイトレーシングが簡単なのは入り口だけ 20世紀あたりのなんちゃってレイトレーシングは楽だけど本格的にやると解決できない問題が多数出てくる
762 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 11:32:34.68 ID:D1VtDJH7.net] ファイル開くのはそれ自体がすっごい遅い操作だから例外のコストなんか無視できるのと 開き損なうとそれ以降の処理が致命的な失敗になりやすい そういう操作のエラー通知が例外に向いてる
763 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 11:47:23.91 ID:2dORgvS5.net] >>733 例外発生時の速度が問題になるなら例外の使い方を見直した方がいい
764 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 12:31:28.26 ID:Z0vFISs/.net] >>832 に対して 例外は遅いから例外の時に使いましょう ということを書いたつもりなんだけど 単なる終端マークとか区切りとか そういう頻出する可能性のある用途では使っちゃダメってこと
765 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 12:35:13.84 ID:Z0vFISs/.net] 例外は仕組みを入れるだけで、 例外が発生しなくてもオーバーヘッドが発生する環境がほとんどなので 組み込みだとわざと無効にすることも多い x86の64bitはオーバーヘッドが無い代わりに 例外発生時は極端に遅い 一度測定してみるとその遅さがよく分かる そういうことがわかっていれば どこに使うべきかがおのずとわかる
766 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 12:41:46.34 ID:WtSMvp2C.net] 低水準ライブラリに属するべき関数が例外みたいな高級なしくみに依存するのは美しくないキモス システム設計とかアプリの基本設計レベルで例外の種類とcatch箇所とcatch時の処理を定義して使うなら良い が、呼び出し側でif文を書きたくないからという理由でイミフな例外定義を行うと、結局第三者に正しく使ってもらえない キモス
767 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 12:48:07.11 ID:WtSMvp2C.net] 例外のオーバーヘッドについてはこれな↓↓↓ ttp://zakkas783-blog-blog.tumblr.com/post/3870295160/c-の例外ハンドリングとパフォーマンス >>740 の通り例外処理の裏側の実装には2つの潮流があるんじゃ
768 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 13:03:58.12 ID:u8inRKlo.net] 制御をすっ飛ばす必然性があるほどの例外的状況に限るのが吉だろうな。 返値で返せないものを返すのに使うなら検査例外のような保証が欲しいところ。
769 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 13:22:39.94 ID:BGH31mSy.net] 別スレッドでの関数呼び出し階層が深すぎて安全にスレッド終了させる方法が分からない時に便利でしょ、例外。