- 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
- 802 名前:はちみつ餃子 mailto:sage [2018/08/14(火) 16:32:25.07 ID:EPC9iky2.net]
- >>775
「できない」って話だから……
- 803 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:01:49.73 ID:zHCh+0V6.net]
- vector<object*>* list;
Fuga fuga; Hoge* hoge; for(int i = 0; i < 5; ++i) { fuga.fugaMethod(hoge->hogeMethod(list->at[i])); fuga.fugaMethod(hoge->hogeMethod((*list)[i])); // エラー } リストの要素に対して全部処理をするっていうよくあるプログラムなんです。 なんですが、上の書き方だと通るのに対して、下の書き方だと「式にはクラス型が必要です。」と出ます。 vectorの要素指定はa
- 804 名前:t(i)を使うか括弧で指定するかの2通り、違いは範囲チェックを行うかどうかだけという認識だったのですが……
何がまずいんでしょうか? [] - [ここ壊れてます]
- 805 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:10:49.55 ID:oMbBbcEB.net]
- list->at[i]はまずいだろ
typoか? それとも本当にそう書いているのか?
- 806 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:27:33.05 ID:8F/Sy9ZI.net]
- typoじゃないとしたら、上は通ってるんだから
hogeMethodの引数がobjectかobject&なんだろうな
- 807 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:31:42.31 ID:zHCh+0V6.net]
- えーっとtypoじゃないです。
何がまずいんでしょうか。ポインタだしアロー演算子で問題ないのでは。 それとhogeMethodの引数はobject*ですね。抜けてましたすいません。
- 808 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:49:25.24 ID:K29Njy0m.net]
- listの前の*が邪魔?
- 809 名前: mailto:sage [2018/08/14(火) 18:00:20.07 ID:5K5qKv3G.net]
- >>777
vector<string *>::iterator list; なら理解できるのですが、 vector<string *> *list; というのが、よくわからないのです プログラム例では list にすでに値が入っているようですが、実際には list をどのように初期化しているのでしょうか?
- 810 名前:782 mailto:sage [2018/08/14(火) 18:19:15.36 ID:5K5qKv3G.net]
- >>777
(*list)[i] (*list).at(i) list->at(i) は等価であることを確認しましたが list->at[i] というのは逆にダメっぽいです https://ideone.com/ripLji list->at[i] がどういう文脈なのか? コンパイラがなになのか情報をください
- 811 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 18:27:08.03 ID:oMbBbcEB.net]
- >>780
何がまずいって listはvector<object*>へのポインタ list->atはvector<object*>::atでメンバ関数 ここまではいいが at[i]は関数に添え字だろ こうやってんのと同じだぜ void func(); func[1];
- 812 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 18:32:33.03 ID:9UC8tUq9.net]
- なんでメンバ関数を配列にしたいのかかが気になる
- 813 名前:デフォルトの名無しさん [2018/08/14(火) 18:35:36.38 ID:zHCh+0V6.net]
- あ、すいません、確かにat(i)はtypoでしたね。
ごっちゃになってましたすいません
- 814 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 19:46:01.17 ID:TB9AjC50.net]
- >>786
> 確かにat(i)はtypoでしたね。 なら普通に両方コンパイルはできるはず エラーになる最小限のコードにしてどこかにアップして
- 815 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 20:00:34.01 ID:aWfB90DT.net]
- そんでだいたい最小化してるうちに気づくんだよなw
- 816 名前:デフォルトの名無しさん [2018/08/14(火) 20:01:24.90 ID:UKq+CNIv.net]
- 関数テンプレートの部分特殊化ってC++17でもできないの?
- 817 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 20:08:30.24 ID:HhG+br3u.net]
- >>788
まあ本人気づくのが一番いいから
- 818 名前:782 mailto:sage [2018/08/14(火) 20:18:07.26 ID:5K5qKv3G.net]
- >>790
寛大ですね…
- 819 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 13:34:49.18 ID:bAZUebux.net]
- >>789
できない # いらんだろ、多重定義で同じ目的を達成できるから
- 820 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 15:58:12.56 ID:/VaqEwQY.net]
- 関数の多重定義もクラステンプレートの部分特殊化でstaticメソッドを特殊化したら代替できるからイラン
- 821 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 17:45:56.30 ID:bAZUebux.net]
- >>793
どゆこと? たとえば int abs(int); double abs(double); を、 クラステンプレートの部分特殊化でstaticメソッドを特殊化つーと template <typename A, typename B> struct num; template <typename A> struct num<int> { static int abs(int); }; template <> int num<int, int>::abs(int arg) { return arg < 0 ? -arg : arg; } みたいなことすんのか?
- 822 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 18:07:46.14 ID:GkoLimxd.net]
- 普通は関数オブジェクトにするんじゃね?auto operator()(...);
- 823 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 18:46:53.07 ID:GkoLimxd.net]
- あ、余計なこと言った。
https://dotup.org/uploda/dotup.org1613077.zip
- 824 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 18:48:12.11 ID:GkoLimxd.net]
- うご、投稿してモータ。
例のローグのシステムが大分できたのでなんとなく投下してみた。 汎用AIってどうやって書けばいいんや? しかも、まだバトルシステム作ってないし。
- 825 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 19:02:43.98 ID:GkoLimxd.net]
- ところで質問なんだけど、パスファインディングってサービスとして入れたほうがいいのかなぁ。。。
- 826 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 22:40:01.74 ID:QxvGNpoJ.net]
- >>766です
C++テンプレートメタプログラミングという本を買ってみたのですが、この本C++BoostのMPLの解説本です C++17がある今、この本の価値ってあるんでしょうか? 一応全部読んでみようと思ってるのですが
- 827 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 07:25:03.80 ID:t6OwQxX1.net]
- >>799
> 一応全部読んでみようと思ってるのですが 読んでみてから判断すれば?
- 828 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 08:19:40.35 ID:NceGg90N.net]
- 多分聞きたいのはこれ読んだらオラついていいですか?ってことだと思う。
- 829 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 08:50:47.25 ID:MDl/UAh8.net]
- >>800
>>801 すみません Boostを使わず、mplを使わないのでメタプログラミングするのが目的なので、それがこの本を読んで可能なのか?という質問の趣旨です
- 830 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 09:51:57.97 ID:t6OwQxX1.net]
- >>802
> Boostを使わず、mplを使わないのでメタプログラミングするのが目的 そんな明確な目標あるのになんでこんな本買うかなぁ ちょっとググればこんな意見が見つかるだろうに… ちょっと文章が直訳っぽくてところどころ不自然だけど,丁寧にBoost.MPLの実装(と使い方)について解説してあってとても分かり易い! d.hatena.ne.jp/eldesh/touch/20100412/1271090614
- 831 名前:はちみつ餃子 mailto:sage [2018/08/16(木) 10:25:53.58 ID:f3MTrlhW.net]
- >>802
メタプログラミングを活用すればこういうことも出来得るという事例集として見れば無駄ではないと思うが、 それを読んでメタプログラミングが出来るようになるかというと否だと思う。
- 832 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 12:02:41.09 ID:MDl/UAh8.net]
- >>803
この本を買ったのは高橋晶のC++11対応のテンプレートテクニックって本を読んで、巻末に本の紹介があって、メタプログラミングについて知りたいならこの本を読むべきって書かれてあって、読むことにした そのブログはすでに読んである >>804 メタプログラミング自体はどうすれば出来るだろうか?
- 833 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 12:37:43.15 ID:jOS7jxfN.net]
- 魔除けとして重宝している
- 834 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 12:41:22.12 ID:lxkNuozk.net]
- > そのブログはすでに読んである
私はバカです って言われても…
- 835 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 13:19:15.31 ID:MDl/UAh8.net]
- >>806
売ることにします‥ >>807 もう日本人に頼るのは辞めました そもそもWG21から情報を検索したほうが有意義かも これからは日本語のプログラミング書籍は買わない方がいいって教訓になりました
- 836 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 13:24:07.84 ID:AI90/kCO.net]
- 捨てゼリフ来たね
そろそろご退場かな 総員塩の用意
- 837 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 13:27:57.29 ID:MDl/UAh8.net]
- >>809
いやだって日本人でC++やってる人少ないじゃないですか(´・ω・`)
- 838 名前:はちみつ餃子 mailto:sage [2018/08/16(木) 13:47:10.99 ID:f3MTrlhW.net]
- >>810
んなこたーない。
- 839 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 14:10:22.64 ID:yO9+GMaw.net]
- 「少ない」に比較がついてないから何とも言えない
- 840 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 14:34:47.46 ID:jOS7jxfN.net]
- やっぱPerl人口が一番多いと思うのねん
その次がPHP
- 841 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 16:39:09.24 ID:TxXnQ6gb.net]
- 英語をスラスラ読めるなら「遅い・高い・分かりにくい」の
和訳版を買うことはないわな。 原書ならPDF版がタダでネット公開されてたりするし。
- 842 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 20:44:21.68 ID:JF8AnYsh.net]
- >>799
前半とこどこBoost.MPLの設計理念とかどう実装されてるかとか書いてあるから、そこは参考になると思う 後半のTMP関連のテクニックはおそらく求めているものではないかと ExpresionTemplateの実装にあまり踏み込まないけど、どのように誤用されているかは少し参考になった
- 843 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 11:29:50.85 ID:lqMuboYf.net]
- https://wandbox.org/permlink/TC3VtzZ4Dd53Z1Y4
こういうコード書きました。 UIはとりあえず置いといて、Jsonの構造ってこんな感じでいいのでしょうか。 ご意見あったら教えてください。
- 844 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 11:54:52.92 ID:BEBC5Dle.net]
- あの初歩的な質問で申し訳ないんですけど、クラスのメンバ関数のことです
例えばAってクラスがあって、hogehogeって関数があったとします それでhogehogeは内部で関数を3つ呼び出す。ざっとこんなイメージです A.h class A { public: void hogehoge(); } A.cpp void A::hogehoge() { x(); y(); z(); } main.cpp main() { A a; a.hogehoge; } んでこの場合の関数x() y() z()なんですけどクラスAのメンバ関数にすべきなんでしょうか。 それとも単にA.cpp内に関数書くだけでいいんでしょうか。 x()y()z()はhogehoge以外から呼び出されることはありません。 自分は前者だと思うんですが、参考にしろと渡された前任者(今いない)のコードだとなんでもかんでもメンバ関数です。 よろしくおねがいします。
- 845 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:01:22.82 ID:BEBC5Dle.net]
- あ、すいませんhogehogeではxyzを呼び出す以外にも処理を行うものとします
そうでないとxyzをメンバ関数にしてhogehogeなくせってことになるので
- 846 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:17:52.69 ID:TtX4VAeH.net]
- > x()y()z()はhogehoge以外から呼び出されることはありません。
だったらラムダ式じゃね? auto x = [this]{}; auto y = [this]{}; auto z = [this]{};
- 847 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:27:19.70 ID:6wrElEJt.net]
- >>817
どっちでも良い というか時と場合によってどっちにすべきかが違う
- 848 名前:デフォルトの名無しさん [2018/08/17(金) 12:29:57.76 ID:JC8oBFgD.net]
- メイヤーズは独立できるならメンバにせずに関数にしろって言ってた
- 849 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:31:59.93 ID:PQea+QN+.net]
- 言語処理ってphythonとC++どっちが向いてる?
- 850 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:37:52.08 ID:lqMuboYf.net]
- 処理内容によると思う。
一応、自分は、protectedのメンバ関数にするかなぁ。
- 851 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:49:54.76 ID:UZUA85Xq.net]
- >>822
漠然過ぎてどうとも ゼロから書く気はないんだろうから試行錯誤するのも含めてPythonのほうを勧めるよ
- 852 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 13:08:34.93 ID:KaaDwp63.net]
- >>817
関数にできるってことはメンバ変数の参照とか他のメソッド呼び出しがないんだよね なら関数にした方が微妙に速度が稼げる(thisを渡さずに済むから) 各々一回しか呼ばないなら呼び出し箇所に展開しても良いような気がする
- 853 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 13:39:31.71 ID:BEBC5Dle.net]
- 参考になりました。皆様ありがとうございました。
effective C++のメイヤーズ先生に従い、通常の関数にすることにします。 ……あれ、そうするとその関数群だけで使う共通の変数ってメンバ変数にすべきなのかcpp冒頭で宣言してグローバル変数にすべきなのか いやぁ難しいですね
- 854 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 13:59:24.66 ID:IJ2e6Mcr.net]
- データメンバーにしなさい
グローバル変数は悪である
- 855 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 14:21:39.44 ID:TtX4VAeH.net]
- >>826
「共通の変数を使う関数群」をクラス化するんだよ そのためにあるんだから
- 856 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 15:10:01.00 ID:ujK6h2XS.net]
- >>826
> ……あれ、そうするとその関数群だけで使う共通の変数 いや、そんなもんがあるならメンバ変数にするか、それらを構造体とかにまとめて引数で渡すとかしなよ ファイルスコープだとしても今時グローバル変数は無いわ
- 857 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:26:14.63 ID:xjFqJl5K.net]
- いまどきグローバル変数を使うおとこの人って…
- 858 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:26:59.41 ID:PQea+QN+.net]
- >>824
ゼロから書く気はある
- 859 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:32:51.82 ID:uIPUTYG+.net]
- 「すべての男はグローバル変数である」
- 860 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:33:46.61 ID:6wrElEJt.net]
- わたし女だけど
- 861 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:41:55.00 ID:mGHQIGDT.net]
- クラスのstaticメンバにすりゃええんちゃうのん?
- 862 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:52:51.84 ID:TtX4VAeH.net]
- わざわざstaticにする強い理由があればそうするが
消極的な選択なら非staticのほうが何かと楽だぞ
- 863 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:54:48.35 ID:xjFqJl5K.net]
- staticおじさん、再び
- 864 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 18:06:46.13 ID:H85EoLGL.net]
- ちょうど気になる話題だから聞くけど
OpenCVで1つの画像データを複数の関数で扱う場合って、引数として渡すのとグローバル変数として定義するのってどっちが良いのかな?(速度とかの面で) 無限ループで毎フレーム毎にWebカメラから読み取った画像を(グローバル)変数に代入するからそこでの速度とかメモリ管理の差とかあるのかな?
- 865 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 18:08:23.37 ID:UZUA85Xq.net]
- >>831
そこまでして再発明したいんなら言語なんて何でもいいんじゃね? ちなみに素養はお持ちなの? そういう研究してたとか
- 866 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 18:09:24.28 ID:ABziGu/h.net]
- >>833
オカマはだまってろw
- 867 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 18:09:55.69 ID:UZUA85Xq.net]
- >>831
あ、読み違えた 自然言語処理ではないんだね 何かのパーサーでも書きたいんですかね?
- 868 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:04:11.30 ID:/oSEwJ0G.net]
- >>837
OpenCVのMatなら何も考えずにコピーすると浅いコピーになる 浅いコピーのコストが問題になるならグローバルなりメンバなりにする方がいいのでは
- 869 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:06:50.86 ID:6wrElEJt.net]
- 何で浅いコピーだよ
普通はポインタか参照だろ
- 870 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:10:12.86 ID:IJ2e6Mcr.net]
- cv::Matがスマポみたいなもんだということを知らずにチャチャ入れてるなら黙ってたほうがいいよ
- 871 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:17:25.23 ID:6wrElEJt.net]
- そんな事はしっている
目の前に浅いコピーって書いてあるし 浅いコピーよりも当然参照やポインタ渡しの方が速い 当たり前だ sizeofでcv::Matのサイズを調べてみろ 構造体やクラスを渡すのに深い浅いに関わらず コピーなんか使うなよ
- 872 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:28:06.57 ID:KaaDwp63.net]
- >>837
> (速度とかの面で) 早すぎる最適化は諸悪の根源である ドナルド・トラン… じゃなくてクヌース
- 873 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:44:40.54 ID:0e7dWRcF.net]
- 今更になって>>825で言ってくれたことが理解できた
クラス内でメンバ変数使おうとするとメンバ関数じゃないとだめなのね。普通に分けたただの関数からじゃ呼べなかった えーこういうもんなのか
- 874 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:55:12.57 ID:RgiGOjCt.net]
- cv::Matとcv::Mat*のコピーコストの差を気にするくらいならデリファレンスのコストも気にしなきゃな。
- 875 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 20:02:22.24 ID:IJ2e6Mcr.net]
- 844はunique_ptrやshared_ptrも参照渡ししてそう
- 876 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 22:11:59.07 ID:6wrElEJt.net]
- >>847
構造体やクラスだと ポインタや参照がデフォなんだよ とりあえずポインタ、参照で渡す事を考える これでは困る時にはじめて他の方法を考える わざわざ無駄に重くしなくて良い コードサイズも実行時間も使用メモリも増える 悪いことしかない
- 877 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 22:28:22.24 ID:p6eculQx.net]
- >>838
世の中の殆どは再発明の繰り返しではないか そこから新しいものが生まれる >>840 機械学習、音声言語処理に興味ある 生成や知識獲得とかも
- 878 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 22:33:47.04 ID:rVfGTX61.net]
- とりあえず車輪からだな
あっそれロン。大車輪で役満です
- 879 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 23:28:39.10 ID:2sBNjScG.net]
- ユーザーの実行コストを考えたらC++しかありえない
- 880 名前:さまよえる蟻人間 mailto:sage [2018/08/17(金) 23:29:57.49 ID:L+nRWRoK.net]
- >>852
Rustを知りませんか?
- 881 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 23:48:03.15 ID:3F
]
- [ここ壊れてます]
- 882 名前:you0AL.net mailto: >>848
間違って通常のポインタを引数に指定されないよう、共有ポインタの参照を引数にすることはあり得るでしょ。 [] - [ここ壊れてます]
- 883 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 23:49:26.53 ID:2sBNjScG.net]
- RustはいつになったらC++を殺すんだ?
- 884 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 02:00:38.26 ID:/pVEXQTC.net]
- https://github.com/rust-lang/rust/issues
エラーが4000件だから、しばらく無理。
- 885 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 10:32:16.38 ID:zXZq/jKJ.net]
- Visual Studioのデバッグ実行ってクラッシュとかしてもコードのどこでクラッシュしたかを示してくれるのですごく便利なんですが、
ただでさえ重めだった実行が、2015から拍車がかかり、かなり使いにくくなってしまいました。 どうもvector等のSTLの範囲チェック等が重たいとのことで、たしかにSTLの使用割合が多いアプリほど重たい傾向にあります。 たしかに範囲チェックはありがたいのですが、多少デバッグ能力を妥協して動作を軽くできないでしょうか? 理想はデバッグ機能をカスタム実装してリリースモードで動作でしょうけど、 予想できないクラッシュ等に対応するのが難しいと思います。 ご助言、よろしくお願いします。
- 886 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 12:38:36.62 ID:C9f4IyR8.net]
- >>857
IDEに頼るな vimを使え
- 887 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 12:58:55.58 ID:qRHlEVCy.net]
- 理想は平均的な性能のPCを買うことかな
- 888 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 13:48:15.95 ID:9bYd+OzJ.net]
- >>857
https://msdn.microsoft.com/ja-jp/library/hh697468.aspx
- 889 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 15:07:37.45 ID:T6klohyz.net]
- 質問ですが
class Foo { public: int a[100]; Foo(); }; というクラスにおいて、構築時にメンバa[]をゼロ初期化する簡単な書き方はありませんか ちなみに Foo::Foo() : a({ }) { } とやったらエラーになりますた、
- 890 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 15:27:11.61 ID:/pVEXQTC.net]
- https://ideone.com/BuNLLF
こう?
- 891 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 16:07:29.18 ID:cIuR0GWn.net]
- 普通に書いたらええがな。
Foo::Foo(){ for(int i=0; i<100; i++){ a[i] = 0; } }
- 892 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 16:21:12.10 ID:T6klohyz.net]
- レスdクス、
>>862 申し遅れましたがやpっぱC++11では_ですかそうですか…
- 893 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 16:59:01.67 ID:/pVEXQTC.net]
- 初期化法自体はC言語からある方法だけど。
構文はC++だけどね。
- 894 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:03:27.71 ID:/pVEXQTC.net]
- あー、そうなのね。あれって環境依存だったのか。ゴメン。
https://wandbox.org/permlink/ASJ3oCbkha0Ren8B
- 895 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:32:50.09 ID:dGIgNVTb.net]
- >>859
平均的じゃ足りんだろ VMwareとか使いまくるには RAMとHDDがたんまりないと心許ない
- 896 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:34:51.43 ID:WtnFgJ11.net]
- Foo::Foo() : a{ } { }
でええやん
- 897 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:36:04.82 ID:dGIgNVTb.net]
- >>861
Foo::Foo() : a{ } { }
- 898 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:36:29.52 ID:/pVEXQTC.net]
- >>868
そんなことできたのかぁー。うぼぁー。
- 899 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:36:36.32 ID:dGIgNVTb.net]
- あ、被った
すまんこ
- 900 名前:さまよえる蟻人間 mailto:sage [2018/08/18(土) 17:36:58.77 ID:ONgNSdiS.net]
- 今時はSSDだろ。SSDにデータ移行しなよ。VS2017が数秒で起動するぜ。
- 901 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 18:54:50.29 ID:dGIgNVTb.net]
- うんC:はSSD一択だね
できればSLCのやつ
- 902 名前: mailto:sage [2018/08/18(土) 19:32:14.99 ID:/9y7PjMS.net]
- >>872
何もかもがめんどくさっくて、C ドライブになんでもたんまりと仕込むのが好きなんですが、 1TB くらいある SSD ってお高いんでしょう?
- 903 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 19:49:21.94 ID:Q0JvwYe1.net]
- 最近は途中にマウント出来るのよ
- 904 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 19:55:17.69 ID:gititOy1.net]
- >>874
例えば、だが Crucial SSD 1000GB MX500 内蔵2.5インチ 7mm ¥23,738
- 905 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 21:21:58.94 ID:F905Yoig.net]
- 理由はわかるが柔軟性が欲しい
class A{ }; class B: public A{ }; temaplate<typename T> void test(T a, T b){ } A a; B b; test(a, b);//Error.型が一致しない。 test<A>(a, b);//ok.明治すればok
- 906 名前:さまよえる蟻人間 mailto:sage [2018/08/18(土) 21:38:06.56 ID:hlXM+cNJ.net]
- 型を分けて、共通型を使えば?
- 907 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 23:59:13.75 ID:3zCcdQf6.net]
- >>874
きみなら一時間とは言わないが、一日でそのくらい稼ぎ出すんやろ?
- 908 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 00:05:39.35 ID:RqnFNWUi.net]
- >>878
こうすればokというのはわかるけども面倒 template<typename LT, typename RT> void test(LT const& a, RT const& b){ }
- 909 名前:857 mailto:sage [2018/08/19(日) 01:30:39.96 ID:KCtnHGyc.net]
- >>860
ありがとうございます! これでやってみます! >>858 vim、興味深いですが、慣れるまで時間がかかりそうですね^^;
- 910 名前:デフォルトの名無しさん [2018/08/19(日) 09:02:49.22 ID:qd68oMAq.net]
- じゃあメモ帳で。
- 911 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 09:12:46.20 ID:qaYG8ur7.net]
- notepad++かサクラエディタ
ttps://forest.watch.impress.co.jp/library/software/notepadplusp/ ttps://sakura-editor.github.io/download.html
- 912 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 09:25:18.62 ID:wM6XArJ0.net]
- vim は、
迷ったら、Esc を押して、コマンド入力モードにする。 そこで、a を押せば、append 文字入力モードになる :q! 保存せずに終了 :wq 保存して終了
- 913 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 09:26:24.72 ID:xXXJlhyc.net]
- 今は spacemacs 以外あり得ないよ
欠点が厳密にゼロ個な完全なチョイス
- 914 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 09:40:59.64 ID:0vPM1br5.net]
- 最近はVSCodeが使い物になってきたぞ
CMakeとの連携も賢い 補完がまだ遅いが
- 915 名前:857 mailto:sage [2018/08/19(日) 10:56:19.69 ID:KCtnHGyc.net]
- 自分はサクラエディタを10年以上愛用しています。
VisualStudioはコンパイラ兼デバッガとして利用してます。
- 916 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:03:03.06 ID:5+hPFDRj.net]
- 俺の main.cpp が 9万5千行 を超えた
ファイルサイズにして2.37MBある クラス内でなら前方参照が可能なC++の盲点をついて 適当な struct でプログラム全体を丸ごと囲って 前方参照しまくり & ヘッダに全部書くスタイルで 一つのファイルに全部押し込めた C++サイコー
- 917 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:03:58.10 ID:5+hPFDRj.net]
- ちなみにコンパイルが遅くなるのと
コード補完が重くて使い物にならなくなるので 素人にはお勧めしない
- 918 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:13:18.08 ID:MSEMVqOe.net]
- キモイコードだなぁ。メンテナーが泣くぞ。
- 919 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:20:44.33 ID:5+hPFDRj.net]
- 大丈夫
サンデープログラマーで俺一人だけしか書かないから ソースコードも公開してないしな
- 920 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:22:38.72 ID:RqnFNWUi.net]
- なんのプログラムを書いたらそうなるんだ・・・
- 921 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:58:05.30 ID:0c0A7VGq.net]
- >>888
キモすぎやろ… >>891 見してくれ
- 922 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 15:04:46.82 ID:5+hPFDRj.net]
- こういうのは怖いもの見たさみたいなのもあると思うし
これだけでコンパイルして動くものでもないので一応ソースコード あまりにもアレで、そっ閉じだろうけど www.geocities.jp/notenop/tomato_player/main.cpp コンパイル済みのソフトは www.geocities.jp/notenop/tomato_player/index.html からダウンロードできる 非同期処理に俺が思いついた横断的でトリッキーなアイデア https://qiita.com/notenopg/items/40571e69986a58b888a0 ↑が使われている 安全にキャンセル出来なきゃ await の意味ないでしょ!ってなもんで でもなかなか理解されないんだよなぁ、すごいアイデアだと思うんだが それからツリービューのアイテムのピン止めのアイデアは お気に入りやタブの代わりになって画期的だと思うんだが 何故マイクロソフトがエクスプローラに実装しないのか謎 特許関係かね あとはフォルダ階層をそのまま扱える木構造なプレイリストとか そんなことやってたら9万行超えました ちなみにUIはDirectXでちまちまフルスクラッチで手書き その代わりその辺のソフトに負けない速度で、4K対応
- 923 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 15:07:41.51 ID:5+hPFDRj.net]
- 庶民には理解できなくても
プログラマであるあなたたちなら ピン止めできるツリービューが如何に画期的か理解できると思うんだよね タスクバーでも何でもピン止めの時代なのに ツリービューもピン止めできて良いと思うのよね
- 924 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 15:09:21.21 ID:5+hPFDRj.net]
- ああ、ツールバーとかスクロールバーとかのレベルで
全部フルスクラッチでDirectXで手書きだから
- 925 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 16:00:06.94 ID:RqnFNWUi.net]
- 庶民なる俺様にはピン留出来ることの利点がわからん
- 926 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 20:23:08.28 ID:qaYG8ur7.net]
- サクラエディタが優秀だということは分かった
- 927 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 21:38:13.69 ID:Vpx5N+CG.net]
- 見て欲しくて我慢できなかったんだな
- 928 名前: mailto:sage [2018/08/19(日) 22:28:08.34 ID:bW/fB7v7.net]
- >>711
https://www.amazon.co.jp/dp/4871481689/
- 929 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 08:03:46.47 ID:4c85aa3D.net]
- >>900
Makeって何?
- 930 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 14:14:50.32 ID:PcIDGZDw.net]
- >>901
来年にはSunOSにも移植される予定の超最新自動ビルドツールの紹介だよ!
- 931 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 15:49:07.20 ID:YVC1gYT/.net]
- >>901
オライリーがおかしな実験をする本だよ
- 932 名前: mailto:sage [2018/08/20(月) 18:47:45.43 ID:VU5jvdn2.net]
- >>901
昔から使われている原始的といってよいビルドツールです makefile に依存関係を書いておいて、コマンドラインで「 make -j」と起動すると、記述した依存関係にしたがってコンパイル・リンクが行われます
- 933 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 18:59:55.06 ID:ftO9aq8g.net]
- Linuxなんかで配布されたソースから実行ファイルを作成したいって時にお世話になります
- 934 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 20:29:15.33 ID:MlhHAxXO.net]
- >>904
この本を読めばコンパイルについても分かるの?
- 935 名前: mailto:sage [2018/08/20(月) 20:46:46.88 ID:VU5jvdn2.net]
- >>906
>>900 は make を C で記述するものであり、コンパイル自体について記述するものではありません
- 936 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 23:46:22.40 ID:qkN29+U3.net]
- クラス生成に挫折したのかな?w
- 937 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:03:12.90 ID:Y1eCmHG/.net]
- C++自体の本はたくさんあるのにビルドやプロジェクト構成について解説した本って全くないよな
コピペで受け継いできた秘伝のMakefileやconfigureが蔓延してるのなんとかしてくれ 売れないだろうがCMakeの解説本が一冊欲しい
- 938 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:06:59.04 ID:FygfW+En.net]
- cmake はつい最近のVisual Studio 2017アップデートで標準インストール
- 939 名前:ウれるようになったから潜在需要あるかもね…。 []
- [ここ壊れてます]
- 940 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:51:54.00 ID:zakr4cIe.net]
- なんでビルドツールっていつも怪物化しちゃうんだろうな
makeがもう誰も手に負えない怪獣のくせにずっと定番に居座ってて、「Makefileを作るツール」が乱立してそれぞれ怪物化してるの勘弁してほしい
- 941 名前: mailto:sage [2018/08/21(火) 01:03:38.38 ID:Wpz7rvAB.net]
- >>911
>makeがもう誰も手に負えない怪獣 make ですら怪獣になるのだったら、他の高機能ビルドツールはとっくに破綻している現状だったのか!と、ふと
- 942 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 01:35:58.44 ID:mIqstMqN.net]
- makefileなんて複雑な事求めないなら手でかけるレベルだよ
これが複雑で手に負えないとなると、プログラミングも怪しくなる
- 943 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 01:36:31.95 ID:Y1eCmHG/.net]
- ビルドについての教育がないがしろにされてるのが全ての元凶
ある程度以上の規模のプロジェクトを構成するベストプラクティスが示されているところを見たことがない 適当に好きなところから取ってきて動けばいいやくらいに改変して使ってるのが現状
- 944 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 07:06:57.27 ID:agJOmNk0.net]
- 丁寧に書いてるのはこれくらい。
ttp://aegis.sourceforge.net/auug97.pdf
- 945 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 11:19:53.91 ID:zakr4cIe.net]
- 複雑なことをしたいからビルドツールを使うわけでしてねぇ・・・
- 946 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 11:24:41.92 ID:mIqstMqN.net]
- したいという意思があるなら、がんばって理解も出来るだろう
そこまでしなくても、最低限のルール覚えれば使える
- 947 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 11:53:12.22 ID:gERn4ySS.net]
- >>915
goto有害説をもじってるんだなw Makefileを書いていていつも思うのは ソースファイルの依存関係はソースファイルの中に書いてあるのに それをまた二度手間で書かねばならないのがイヤ 面倒くさいのはともかく間違えやすいから
- 948 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:20:54.13 ID:JvEAafEP.net]
- >>918
automake とか gcc -MM とかの話?
- 949 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:38:18.13 ID:Dn6CvPAP.net]
- rustとc++どっちも使ってる人いる?
- 950 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:59:21.72 ID:gERn4ySS.net]
- >>919
gcc -MMか、いいこと聞いた ありがとう
- 951 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 13:56:49.24 ID:Y1HyydAv.net]
- >>919
詳しい解説サンクス こんなのがあったのか
- 952 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 16:55:02.40 ID:59eaeAGG.net]
- >>917
ここで根性論とはセンスあるわ もちろんエンジニアでなく笑いの
- 953 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 17:26:56.17 ID:/1sxYxCd.net]
- エンジニアでなく園児にゃ
- 954 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 19:40:42.98 ID:Y1eCmHG/.net]
- WindowsでCMakeはfind_packageでだいたい詰む
vcpkgで対応できなければ結局自分で書くはめになり、面倒くさくなってmingw使うかVSのプロジェクトと同居することになる
- 955 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 16:26:31.16 ID:BT6ndhEb.net]
- C++ とは直接関係ないけど make/Makefile は擬似ターゲットを使って
バッチ的な定型処理を1個のファイルでまとめて管理できるのが便利でね。 make find WORD=... 全ソースから WORD= で指定した単語を含む行を検索、みたいな。 自分で作った便利ターゲットの使い方を usage: に書いとくのを忘れるけど。
- 956 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 17:38:28.37 ID:ua+EoSC8.net]
- >>926
perlでok
- 957 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 19:10:59.67 ID:lMaJ9TV4.net]
- C言語のビルドシステムならC言語で書けるようにするべきだと思うのだがよく分からない専用の言語を使わされるのは何故
この手のスクリプト言語は可読性がデバッガもないから中身を探るのが難しすぎる
- 958 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 19:27:23.21 ID:J6lVaoNe.net]
- 君がそれを作って公開してみれば良いと思うんだが
- 959 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 20:50:10.20 ID:4/HlUcDP.net]
- C++のビルドツールといえばboostでお馴染みのbjam
実質boost専用に作ってるだけなのにあんな聳え立つ糞の山になっちゃうんだからビルドツールって怖いね
- 960 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 22:31:38.77 ID:G7PvCZFg.net]
- ソフト名がまだ決まっていないけどプログラム開発がスタートするって一般的だと思うんですが、
こういうときってコードネームを付けますよね? このとき、VisualStudioのプロジェクト名もコードネームにしますよね? アプリのウィンドウキャプションとかはアプリ名が決まり次第反映させられますけど、 プロジェクト名は途中で変えられないので、そのままになってしまいますが、しょうがないですよね? 要は社内の開発で問題なければOKで、 リリースしたときにコードネームがどこかに混じってしまわないように気を付ければいいだけですよね? みなさんがどうされてるのか気になったのでお聞きしました。
- 961 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 23:03:51.57 ID:4/HlUcDP.net]
- 必要なら変えるよ
slnやvcxprojはただのxmlだから名前変えるだけならそんなに難しくない
- 962 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 00:06:20.88 ID:0/a4zf/K.net]
- 英国ポエムシリーズでしょう
bjam=ブージャムは言うまでも無く、パンジャンドラムすらも無論英国のポエムから採られた 他にも兵器界隈ではスナークとかが存在するのは周知の通り 日本だと仏教用語から採ればいいんじゃあないですかね
- 963 名前:931 mailto:sage [2018/08/23(木) 00:10:54.70 ID:U43QDDsh.net]
- >>932
なるほど〜、プロジェクト関連ファイルを編集することで名前を変えることはできるんですね。 なら気兼ねなく最初はコードネームにしときます。 ありがとうございました^^
- 964 名前: mailto:sage [2018/08/23(木) 22:00:21.31 ID:NMfUyUL+.net]
- std::ref() について教えてください
void f(:ostringstream &os) { ... } int main() { ostringstream s; std::thread(f, std::ref(s)); ... とありましたが、なぜ呼び出し側で「おまじない」のstd::ref() が必要なのか理解できません どんなときに呼び出し側で std::ref() が必要なのでしょうか? テンプレート関係かと思いましたが https://ideone.com/7fF53F は問題なく、std::ref() が必要となるプログラム例を思いつくことができません よろしくお願いいたします
- 965 名前:さまよえる蟻人間 mailto:sage [2018/08/23(木) 22:17:07.10 ID:Z2Fii0dD.net]
- std::refの規格表とソースを見たか?
余計なコピーを抑制してるんだ。
- 966 名前:さまよえる蟻人間 mailto:sage [2018/08/23(木) 22:18:22.48 ID:Z2Fii0dD.net]
- s/表/票/
- 967 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:33:14.61 ID:/6RK1Hlx.net]
- 非参照なテンプレートな引数に一時変数を作らずに参照を渡せる
- 968 名前: mailto:sage [2018/08/23(木) 22:52:37.79 ID:NMfUyUL+.net]
- >>938
コメントありがとうございます コピーコンストラクタが禁止されている std::cout をテンプレート引数にわたす場合で理解できました(かもしれません) https://ideone.com/3eqEJY 一つ質問ですが、私なら、このプログラム例の y() template<class T> void y((*f)(), T &os) { ... } のように、テンプレートを書く時点で参照に書いてしまうのですが、 あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?
- 969 名前:デフォルトの名無しさん [2018/08/24(金) 02:37:15.13 ID:kcQyW4E+.net]
- 大阪はいたって平和
しょぼいにもホドがある
- 970 名前: mailto:sage [2018/08/24(金) 03:55:21.10 ID:A5L5xSI8.net]
- >>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなもの std::thread のコンストラクタを眺めていて気が付いたこと…これ、可変長テンプレートですね
- 971 名前: mailto:sage [2018/08/24(金) 04:17:14.78 ID:A5L5xSI8.net]
- x86 の cmpxchg を使いたくて、gcc 拡張の __sync_val_compare_and_swap() を試していました
shinh.hatenablog.com/entry/20060817/1155781747 https://ideone.com/tpefmL c++11 に std::atomic::compare_exchange_weak() を見つけましたが、これは適当に(任意に) new で確保したヒープにも適用できるものでしょうか?
- 972 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:59:06.64 ID:ZkSPfVdV.net]
- 何で出来ないと思うの?
- 973 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 08:53:09.59 ID:/11s7nnG.net]
- template <typename T, typename... ARGS>
class nested_error : public std::nested_exception, public ARGS... { public: nested_error(T const& t, ARGS const&... args) : T(t), nested_error(args...) //C3511 { } nested_error(T const& t) : T(t) { } }; 何かうまい手ない?
- 974 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:51:57.64 ID:rL3qzGy6.net]
- そりゃまー、実体化した内部ではTは決定済みだろうから無理だろう。
Anyつかうとか・・・。
- 975 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 14:24:43.54 ID:rL3qzGy6.net]
- あ、すまん。おかしなこと言った。
えーっと、変数が一個じゃ足りないな。 イニシャライザーリスト使うか、下位関数にキックするか。
- 976 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 15:05:48.05 ID:XmdDRLnv.net]
- そもそもコンストラクタの委譲は再帰禁止だったと思うが
別のクラステンプレートのメンバ関数とか関数テンプレートで再帰するしかないと思う
- 977 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 15:57:42.66 ID:rL3qzGy6.net]
- https://wandbox.org/permlink/KrUV4MTPdV0l4OoO
興味があったのでそれっぽいコード書いてみた。 これキャッチするの無理だろ。
- 978 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 16:53:35.24 ID:rL3qzGy6.net]
- そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
昔、例外投げるときはメモリが足りなかったりとかクリティカルな状況だからやめろって言われたような気がする。 どうやったっけ?
- 979 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:24:33.46 ID:/11s7nnG.net]
- >>948
なんか面白そうなのうpしてくれてありがとう すまん、今かなり酔っ払ってる 素面に戻ってからじっくり読むから ちょっと待ってて
- 980 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:56:26.92 ID:5ar3I1wr.net]
- >>948
つ catch(A<B, C> E)
- 981 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:23:40.93 ID:r5O9PJUC.net]
- >>949
> そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ? メモリー不足による例外発生時だとその例外処理時のメモリー確保自体が失敗するから例外処理(例えばログ出力)ができなくなるってこと
- 982 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:44:16.72 ID:rL3qzGy6.net]
- >>951
そらまー、引数がそれの時はできるけど、必ず把握はしてないでしょ。 >>952 あぁ、なるほど。ありがとう。
- 983 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:51:49.46 ID:cO/mJ1mq.net]
- >>952
メイヤーズ本に簡単な回避テクが書いてある 希ガス
- 984 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:52:40.48 ID:cO/mJ1mq.net]
- 真にご法度なのはデストラクタの中での例外発生なんじゃ…
- 985 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 21:06:57.48 ID:tfF8aOe1.net]
- >>953
951だけど、何したいのか分からない。 catch (decltype(X) E) ならええの?
- 986 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 22:12:01.59 ID:rL3qzGy6.net]
- https://wandbox.org/permlink/uEH5L9KBV9L1BdYn
うはー、気が向いたから、コンストラクタに推論させようと思ったら手間食った。あー疲れた。 しかし、理解が深まって良かったかな。うえー。 >>956 投げた本人ならできるけど別のところから飛んできたやつはつかめなくない?
- 987 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 22:26:38.94 ID:rL3qzGy6.net]
- しかし、色々試したが結局うまくいかず、解説ページの死角にぽろっとあるのが最高にリアル。
- 988 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:19:11.18 ID:5ar3I1wr.net]
- >>957
例えばA<B, C>とA<D>は全く別の型なのだから、どっちの型が飛んでくるかわからないのに両方catchするのは無理でしょ。 Base型で試そうとした痕跡があるけど、catchした先でA<B, C>またはA<D>の関数を呼び出そうとしているからそれもできない。 「別のところ」から飛んでくる例外の型はコンパイル時には確定しているのだから、メタプログラミングが通常やるように、「別のところ」のテンプレ引数でthrowする型を決定できるようにすればいいんじゃね?
- 989 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:23:12.69 ID:rL3qzGy6.net]
- >>959
うん。多分それで困ると思う。>>944が! メタプロやらないから可能性は感じるけど限界がわからない。 まぁ、俺は興味で書いただけだから、>>944がどうするかはシラネ・・・。
- 990 名前:デフォルトの名無しさん [2018/08/25(土) 23:24:09.84 ID:Efgla6YW.net]
- >>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか? threadの場合デフォルトで参照だとdata raceを気づかないで起こす可能性が上がる。 設計としてスレッドの引数はコピーして渡すほうが安全性は高い。 一般論で言えば一時オブジェクトを受け取るならconst&になるけど、 これだとmoveできないので逆に性能が劣化する場合がある。
- 991 名前:デフォルトの名無しさん [2018/08/25(土) 23:32:37.06 ID:Efgla6YW.net]
- 最近の提案なんかではメモリ確保失敗は回復が難しく一般的な例外とは
区別して考えるのが合理的なんじゃないかって話が出てきてる。 んで新しく静的な例外を導入しようっていう話が上がってる。
- 992 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:39:53.83 ID:rL3qzGy6.net]
- >>962
コンパイルタイムで例外わかるんだったら、普通にコンパイルエラーにしよ?
- 993 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:47:31.99 ID:cO/mJ1mq.net]
- メメント・メモリ
- 994 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 02:56:15.82 ID:zhFpXu2e.net]
- ヒープが無くなったら、HeapCreateで作れば良いのに。
by マリー・アンチョワネット
- 995 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 14:06:36.91 ID:Q8b2w7YQ.net]
- メモリがどれくらい必要なのか簡単に静的解析できたらいいなあと思うけど
再帰関数のメモリ消費量とか計算難しそう
- 996 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 14:10:00.99 ID:BwlGzYMc.net]
- mcc68kなんかは-Sでアセンブラ出力させると
コメントにスタック使用量を入れてくれてたな
- 997 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:26:38.30 ID:OiuVvKbz.net]
- 割り込みになるけどちょっと質問させてください
struct hoge { int a, b, c; }; auto a = hoge{1, 2, 3}; auto b = int[]{1, 2, 3, 4}; aみたいに型を明示して中括弧でくくった一時オブジェクトは作れるけど、 bみたいに配列を明示して作ることって出来ないですかね? 単に文法上の質問なんで「やる必要あるのか」とか「std::array使え」とか「構造体でラップしろ」は無しでお願いします
- 998 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:31:13.94 ID:Ws2ZfrVi.net]
- int[]は int * のシンタックスシュガー
- 999 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:34:14.95 ID:OiuVvKbz.net]
- int[4]でもだめだったんですよね・・・・
というか今思いついて(int[4]){1, 2, 3, 4}でやったらいけました お騒がしてすみませそ
- 1000 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:05:48.84 ID:qnZA5cjL.net]
- auto b ={1, 2, 3, 4};
- 1001 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:12:01.81 ID:2rP1aXG6.net]
- >>970
それはC99の複合リテラルになるけど、C++で使ってよかったっけ?
- 1002 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:19:57.43 ID:qnZA5cjL.net]
- warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]
- 1003 名前:デフォルトの名無しさん [2018/08/26(日) 20:21:33.00 ID:hANAm2gW.net]
- https://ideone.com/A9Bccy
#include <stdio.h> int main() { int* b1 = {1, 2, 3, 4}; int b2[4] = {5, 6, 7, 8}; int b3[] = {9, 10, 11, 12}; fprintf(stdout, "b1:%u\n", sizeof(b1)); fprintf(stdout, "b2:%u\n", sizeof(b2)); fprintf(stdout, "b3:%u\n", sizeof(b3)); return 0; } https://ideone.com/rJw9cK #include <iostream> using namespace std; int main() { // int* b1 = {1, 2, 3, 4}; コンパイルエラー int b2[4] = {5, 6, 7, 8}; int b3[] = {9, 10, 11, 12}; // cout << "b1:" << sizeof(b1) << std::endl; cout << "b2:" << sizeof(b2) << std::endl; cout << "b3:" << sizeof(b3) << std::endl; return 0; }
- 1004 名前:デフォルトの名無しさん [2018/08/26(日) 20:22:49.21 ID:hANAm2gW.net]
- c
b1:8 b2:16 b3:16 c++ b2:16 b3:16
- 1005 名前:デフォルトの名無しさん [2018/08/26(日) 20:27:01.66 ID:hANAm2gW.net]
- うん
やっぱり このスレにもアホしかいない
- 1006 名前:さまよえる蟻人間 mailto:sage [2018/08/26(日) 20:28:44.90 ID:Vxoswi+g.net]
- >>976
自分が天才だと思っているなら、こんなところで遊んでないで、なんか凄いソフトを作ってくれよ。
- 1007 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:31:31.48 ID:BwlGzYMc.net]
- レス番が飛んでるなあ
- 1008 名前:デフォルトの名無しさん [2018/08/26(日) 20:31:32.32 ID:hANAm2gW.net]
- オレは自分を天才とか思ってない
オレは天才じゃないが普通の人間だ この板にいる低学歴知恵遅れが まともじゃないのがヤバイといってるワケ 教育の程度や知能に大きな問題があるといってるわけ しかもその自覚がない まずまともな人間になるところから
- 1009 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:44:37.30 ID:qnZA5cjL.net]
- 誤解したまま帰った?
auto a=(int[4]){1,2,3,4}; for(int i=0;i<4;i++) { printf("%d \n",a[i]); } 出力 0 0 0 0
- 1010 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 21:13:55.49 ID:OiuVvKbz.net]
- あー、すみませんautoって書いたのがまずかったですね
試してみたんですが、実際にはコンストラクタに渡すので大丈夫でした autoだと配列の一時オブジェクトへのポインタになるからまずいですね
- 1011 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 21:54:34.00 ID:7VGl0ROF.net]
- >>981
autoでなくても不味いよ
- 1012 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 22:13:43.13 ID:zpiwFHmU.net]
- >>977
ほんこれ
- 1013 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 22:53:29.24 ID:OiuVvKbz.net]
- >>982
なにがどうまずいですかね?
- 1014 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 08:18:57.12 ID:YiUsgylF.net]
- まったりとしてコクが無く、魚介類の生臭さを濃縮したような
スープと同じぐらい不味い
- 1015 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:42:16.09 ID:QRiCvp9j.net]
- きも
- 1016 名前:944 mailto:sage [2018/08/27(月) 13:55:56.63 ID:vY3QDx2y.net]
- >>948
お待たせ 俺っちの質問はnested_exceptionを使うケースなので、 948のコードでいうとBaseを多相的クラスにしといて catch(Base&)で捕獲し、dynamic_castでBやCへの アクセスを試みるというようなことだ ところで template<class... Ts> overloaded(Ts...)->overloaded<Ts...>; これが読めん、何やってるのか教えてくれんか
- 1017 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:09:13.11 ID:vY3QDx2y.net]
- >>955
std::uncaught_exceptionというのがあるね
- 1018 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:23:40.86 ID:QRiCvp9j.net]
- >>987
クラステンプレートの引数の推論補助(deduction guide
- 1019 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:26:19.85 ID:vY3QDx2y.net]
- >>989
deduction guideね、thx
- 1020 名前:さまよえる蟻人間 mailto:sage [2018/08/27(月) 15:42:34.96 ID:JbKLTkj/.net]
- 次スレ頼む
- 1021 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:02:51.38 ID:r/wp9j7z.net]
- わたくしがC++で書き上げた超高性能次スレ立てマシーンなら次スレなんて一発ですよ
- 1022 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:03:14.62 ID:vY3QDx2y.net]
- 立てたよ
https://mevius.5ch.net/test/read.cgi/tech/1535353320
- 1023 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 01:49:58.08 ID:rjIDuLFn.net]
- スレ番インクリメント機能はC++でも実装不可能なまでに困難な作業だったか
- 1024 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 06:13:26.80 ID:UQgP5OTn.net]
- スレ立てが競合した時の排他制御を実装してくれ
- 1025 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 06:22:11.76 ID:XE/KW9kf.net]
-
板復帰(OK!:Gather .dat file OK:moving DAT 703 -> 686:Get subject.txt OK:Check subject.txt 703 -> 690:Overwrite OK)0.84, 0.77, 0.74 age subject:690 dat:686 rebuild OK!
- 1026 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:40:17.99 ID:fGjEV9Ei.net]
- 997
- 1027 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:40:50.96 ID:fGjEV9Ei.net]
- 998
- 1028 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:41:19.69 ID:fGjEV9Ei.net]
- 999
- 1029 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:41:56.22 ID:fGjEV9Ei.net]
- 1000
- 1030 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 45日 2時間 48分 54秒
- 1031 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|