- 1 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:36:27.08 ID:jZESqUY+.net]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part122 peace.2ch.net/test/read.cgi/tech/1453557975/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 peace.2ch.net/test/read.cgi/tech/1439849418/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/
- 375 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 02:18:19.39 ID:Pl4Qm8o2.net]
- >>373
Ifoldの具象型がIContainerの具象型が中で持ってるデータ構造に依存するのはOKです ダウンキャストというと、どのように行えばいいですか? インターフェースクラスからは具象クラスがわからないため何にダウンキャストすればいいか決定できません…
- 376 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 02:19:31.10 ID:Pl4Qm8o2.net]
- >>374
すみません、具体的にどのような実装になるかイメージができません…
- 377 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 02:21:31.37 ID:VClvi+pB.net]
- >>375-376
いまいち要領を得ないが、具象クラスにdo(IContainer& x);を実装、 中でIContainerからVectorContainerなどにキャストすれば良いんじゃないのか? これ以上は何がしたいのかよくわからないから何とも言えん。
- 378 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 02:42:31.41 ID:VClvi+pB.net]
- もしかしてIfoldではなく、その具象クラスすら、
受け取るべき具象コンテナが決まってないって事か? それもう設計破綻してるから無理だろ。 そうではなく特定型にキャスト可能かわからないってだけなら、 自分でID付けてis_a(int id)とか実装して調べるか、dynamic_cast。
- 379 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 02:51:53.53 ID:9NhLr4qt.net]
- >>372
class IContainer { virtual double& at(int index)=0; virtual void push_back(double& v)=0; };
- 380 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 09:19:37.98 ID:Vp+P3H45.net]
- >>372
std::accumulateみたいなことがしたいように見受けられるけどそうかね?
- 381 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 09:54:48.36 ID:fbT4KBM6.net]
- std::stack<T, C>を
IContainerを受け取るIStackに魔界造したイメージだろうきっと
- 382 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 11:36:06.87 ID:oS3fCNyN.net]
- 欲しいのは単にiteratorじゃね?
visitorはfoldの仕方が変わるからaccept必要でしょ?
- 383 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 13:19:48.43 ID:VClvi+pB.net]
- てっきりテンプレート無しに異なる数値型を扱いたいって事かと思ってたよ。
テンプレート使うならStrategyだけで済んじゃうし。
- 384 名前:デフォルトの名無しさん [2016/03/14(月) 22:12:09.15 ID:bYJAKtH4.net]
- 結局何だったんだ…?
- 385 名前:デフォルトの名無しさん [2016/03/15(火) 18:46:33.79 ID:7F6lH4i+.net]
- すみません、visitorパターンを使うとacceptを持つインターフェースクラス(ライブラリコード)が、
具象クラスであるvisitor(ユーザーコード)に依存してしまうという問題を解決したかったのですが、いまいち伝わらなかったみたいです。 >>378 型タグによるダウンキャストは、メンテの観点から採用できません... >>382 自分がなにを抽象化したいのか再考するきっかけになりました。 ありがとうございました。 結局visitorを内部のコンテナ型に依存するインターフェースクラスとすることで解決しました。 実際にはIVectorContainerとかIListContainerのような形にしました。 正確にはvalue_typeは決まってたのでテンプレートテンプレートパラメータを使いました。
- 386 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 20:37:53.71 ID:drELySke.net]
- それだとデータ別にインターフェースできるから統一できないんじゃないの。
ダウンキャストの方が見えてる分まだマシかと。
- 387 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 20:46:48.46 ID:7F6lH4i+.net]
- >>386
ダウンキャストだとコンテナ型が増えるたびにif文を追加しなくてはならず、 しかも追加し忘れてもコンパイル時にエラーが出ないので…
- 388 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 20:51:40.14 ID:drELySke.net]
- >>387
またわけわからん事言っとるね君。 テンプレートだろうが、結局特定のコンテナのインターフェースに依存するだから、 その部分は場合分けしなきゃならんでしょ。
- 389 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 20:54:05.87 ID:7F6lH4i+.net]
- >>388
いや、それはaccept側のオーバーライドで解決します これがvisitorパターンの一般的な実装かと思いますが、どこがわかりませんか?
- 390 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 21:12:36.21 ID:drELySke.net]
- >>389
うむわけわからんよ。 どうやってacceptのオーバーライドで別種のvisitorを分ける? そもそもテンプレート型に仮想関数付ける形こそ始末が悪くメンテしにくいのだから、 それならいっそインターフェースも消して、 テンプレートの構造的部分型だけで十分だと思うんだが。
- 391 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 21:13:54.39 ID:7F6lH4i+.net]
- >>390
家に帰ったら実装書きます
- 392 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 22:59:29.47 ID:7F6lH4i+.net]
- >>390
こういうことです https://ideone.com/JpA22R これダウンキャストで実装すると、acceptを一つにまとめてif文で一つずつキャストを試すわけですよね? その場合ConcreteXxxContainerがひとつ増えるとacceptを修正し忘れてもコンパイルが通ってしまって困ります
- 393 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 23:00:15.31 ID:18/5NGhU.net]
- visitorクラスの基底クラスをライブラリ側が提供すれば良いのでは?
- 394 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 23:01:00.99 ID:7F6lH4i+.net]
- >>393
という風にしました
- 395 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 23:04:19.56 ID:z48QWO4Q.net]
- ダウンキャストとか言ってるアホはやばいだろ
コード書かせちゃダメなレベル
- 396 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 23:11:15.71 ID:18/5NGhU.net]
- >>394
申し訳
- 397 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 23:48:10.07 ID:L3nufqEx.net]
- 結局具体的に何をやりたいのか分からんな
そもそもVisitorパターンが本当に適切なのか? Visitorパターンみたいな汚くなりがちなものはなるべく避けるべきだと思うが
- 398 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 06:31:57.64 ID:+XU07v9B.net]
- >>392
なんだオーバーライドじゃなくてオーバーロードじゃないの。 静的なのがいいなら構造部分型や標準コンテナの模倣で十分だろう。 そこまでしてインターフェースとVisitorに拘る理由は何? >>395 dynamic_castなら危険でも何でもない。 そうやってダウンキャストを危険危険と、 いちいち大げさに騒ぎ立てる方がアホというか初心者だな。 実際OOPなら多くの場所で使われてるし、設計が簡単になるなら使っても良いんだよ。
- 399 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 06:42:44.25 ID:+XU07v9B.net]
- そんなに静的なチェックが重要と言うなら、オーバーロードもやめとけ。
それぞれ別の名前にしたほうがより安全確実だからね。馬鹿みたいだけど。
- 400 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 07:47:22.56 ID:Jbc4KVVa.net]
- そんなに言うならコード提示すればいいのに
- 401 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 11:05:22.41 ID:9QBMlTeC.net]
- > ダウンキャストとか言ってるアホはやばい
> そうやってダウンキャストを危険危険と 個人的には「ダウンキャスト」っていう用語自体がアホ アップ/ダウンの概念を不用意に持ち込んだ初心者ワードだと思う 暗黙の型変換(implicit conversion) キャスト演算[明示的な型変換(explicit conversion) 後者を単にキャストと呼ぶのがC/C++の文化
- 402 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 12:20:06.84 ID:hEm8Gz+A.net]
- >>401
お前のルールをさも普遍的なものであるかのように語られても
- 403 名前:デフォルトの名無しさん [2016/03/16(水) 15:13:44.46 ID:YWKSC+YR.net]
- 参照を返す関数は戻り値の一時オブジェクトは作成されないのですか
- 404 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 17:05:09.47 ID:noSrSdLM.net]
- 一体どこに一時オブジェが作成される要素があるというのか
- 405 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 17:32:24.76 ID:P1US5avI.net]
- >>403
まさかとは思うがローカル変数の参照を返したりしてないよな?
- 406 名前:デフォルトの名無しさん [2016/03/16(水) 17:34:09.97 ID:bCkVw2Gt.net]
- >>405
返すこともありますが 参照が有効か無効かは問題にしてません
- 407 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 17:35:54.73 ID:P1US5avI.net]
- 漢だな
- 408 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 18:42:01.29 ID:Sre9WvB0.net]
- 天才だ
- 409 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 20:48:14.54 ID:Zxg3aYLU.net]
- >>401
それダウンキャストと何の関係もない話だよね?
- 410 名前:デフォルトの名無しさん [2016/03/16(水) 21:09:39.81 ID:8e8fbPBE.net]
- >>401
律儀に規格用語だけ使って話すのと アホかどうかは関係ねえぞ おまえが体現しているようにw
- 411 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:20:12.09 ID:ejdJRW9Z.net]
- >そんなに静的なチェックが重要と言うなら、オーバーロードもやめとけ。
これ意味不明だな オーバーロードは静的なのに
- 412 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:42:57.82 ID:+XU07v9B.net]
- >>411
オーバーロードに型チェックはあるが、 ユーザー定義変換のように、使用者側から見れば暗黙に見える変換が起きうるぞ。 なので確実なチェックが欲しいなら一つずつ名前を付けた方が良い。 どうだ馬鹿みたいだろう?
- 413 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:51:19.58 ID:noSrSdLM.net]
- >>412はstd::abs(double)やstd::fabs(float)が許せないタイプ
- 414 名前:デフォルトの名無しさん [2016/03/16(水) 21:53:11.55 ID:8e8fbPBE.net]
- そんなに動的なチェックが重要というなら、dynamic_castもやめとけ。
- 415 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:56:22.65 ID:9IPG0ZaQ.net]
- だからdynamic_cast版のコード書いてみろってば
じゃないと比較のしようがない
- 416 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 22:14:17.92 ID:Sre9WvB0.net]
- 男ならCスタイルキャストオンリー
- 417 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 08:31:39.81 ID:yET/+Bsj.net]
- >>412
> 変換が起きうるぞ。 意味わからん 具体例プリーズ
- 418 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 10:21:34.32 ID:mXayW7+h.net]
- >>417
あんま触るな コード出さない時点で誰かわかるだろ
- 419 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 12:44:04.09 ID:Mb/PAzMm.net]
- 仮に変換が起こったとしても、静的でしょ
dynamic_castとは別物
- 420 名前:デフォルトの名無しさん [2016/03/17(木) 21:19:25.81 ID:Nqbbnzs6.net]
- githubに置いてあるゲームをmakeするとコケた。
error: cannot convert 'bool' to 'boolean' for argument '2' to 'int jpeg_read_header(j_decompress_ptr, boolean)' jpeg_read_header(&cinfo, true); エラーをみて思ったんだが、bool 型と boolean 型の違いって何なんだろ?
- 421 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 21:27:52.26 ID:3douJvdz.net]
- >>417
void func( std::string ); func( "filename" ); ← 1 1.大丈夫だが、func( char* )ではないし、std::stringの構築が行われている のやつ言ってるんじゃない? ユーザ定義変換と書いてあるし
- 422 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 21:36:57.43 ID:1OZ8wjSn.net]
- boolをbooleanに変換するoperatorひとつ記述してやればよくね?
そんなに手間じゃないやろ
- 423 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 21:44:32.93 ID:K9pRNqs8.net]
- >>420
コードの該当箇所見た?
- 424 名前:デフォルトの名無しさん [2016/03/17(木) 22:09:31.51 ID:Nqbbnzs6.net]
- jpeglib.hでboolean型が定義されていた。
(boolean) tureでコンパイルは通る。 Cにはbool型は無いんだな。
- 425 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 22:12:09.48 ID:K9pRNqs8.net]
- ないねえ
- 426 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/17(木) 22:20:29.77 ID:ucqcC/SU.net]
- stdbool
- 427 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 22:38:53.07 ID:rjBvJtG9.net]
- あるっちゅーねん
- 428 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 22:40:27.06 ID:ucqcC/SU.net]
- あるっ中年
- 429 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 22:41:49.16 ID:ucqcC/SU.net]
- アル中中年
- 430 名前:デフォルトの名無しさん [2016/03/17(木) 22:42:41.64 ID:JPCzu/ni.net]
- C17で入れるか審議中。
- 431 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 23:12:37.74 ID:/lOxP0ET.net]
- >>421
でそれって > なので確実なチェックが欲しいなら一つずつ名前を付けた で解決できるんか?
- 432 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 23:19:50.72 ID:dAtTnfZR.net]
- 気付き易くした俺天才
ということだろう f_char(""); //OK f_string(""); //きっと誤り
- 433 名前:デフォルトの名無しさん [2016/03/18(金) 00:31:37.54 ID:bZVTun5z.net]
- >>424
C言語はスレ違いだがC99から_Boolという型がある stdbool.hをincludeしたらboolも定義される
- 434 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 05:07:52.40 ID:bw5Y7I/7.net]
- ゼロオーバーヘッドでないなら他の言語を使った方がいい
実行時効率以外に何の理由があってC++なんぞ使うのか
- 435 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 06:23:08.41 ID:bw5Y7I/7.net]
- 一見関係ありそうで全く無関係の書込を強めの口調ですることで、スレのおかしな流れを止めるライフハック
- 436 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/18(金) 06:47:57.93 ID:Ap+aghgX.net]
- それよりお前らClangのソースを読んでみろよ
この世のものとも思えない複雑怪奇 ビルド時間がReactOSよりも長いと来てる
- 437 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 13:00:52.70 ID:RPKOB45D.net]
- convertException(env, [=] () {
Wrapper<WrapperTest>(env, thisj).destroy(); }); ↑このコードの[=] () {〜}ってどういう意味?
- 438 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 13:08:35.67 ID:W5j8+q1I.net]
- ttp://en.cppreference.com/w/cpp/language/lambda
- 439 名前:デフォルトの名無しさん [2016/03/18(金) 13:57:19.97 ID:Kcr5mRax.net]
- [=]は俺も初めて見たときなんじゃそりゃーってなった
- 440 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 15:44:12.24 ID:InA5se8Z.net]
- >>437
「C++ ラムダ式」で検索するのが第一歩。 >>438 は正確なのだろうけど、英語というハードルの高低が人により…。
- 441 名前:デフォルトの名無しさん [2016/03/18(金) 16:01:29.94 ID:HFSK+zOK.net]
- [](){}();
!?
- 442 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 16:16:31.96 ID:410UcNdt.net]
- [=a,&b,&c,=d,&e]とか一々修飾しないといけないの?
- 443 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 16:29:45.63 ID:FVNcSrUO.net]
- 一律同じ条件じゃダメなときはね
- 444 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/18(金) 16:30:09.19 ID:Ap+aghgX.net]
- >>442
[=] [&] [this] を使え
- 445 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 19:11:24.91 ID:oTJE6YWd.net]
- 結局ラムダ式を使うべきところが分からないまま数年経つ
- 446 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 19:44:50.08 ID:UMQZP4zp.net]
- ( ・∀・)つ-[](){}();-
- 447 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 20:18:38.69 ID:vJhS3HXJ.net]
- ラムダ式はインラインになり得る?
- 448 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 21:20:10.79 ID:gDAbGK2s.net]
- map を使うとき,キーについて operator-() を定義する必要があるとのことですが,operator==() の定義は必要ないのでしょうか?
実際 operator==() を定義しないままで動いているようですが,気持ち悪いです. よろしくお願いいたします.
- 449 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 21:30:29.40 ID:FKb875f6.net]
- 記号でなんとかしようとするから複雑怪奇で意味不明になっていく
- 450 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 22:06:18.03 ID:vhFEV+GW.net]
- algorithmを使う時にはラムダを結構使うかな。
- 451 名前:デフォルトの名無しさん [2016/03/18(金) 22:08:14.37 ID:oKqsBnC/.net]
- ファンクタはもう出番ないんですか
- 452 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 22:19:30.53 ID:vhFEV+GW.net]
- >>448
そんな話はじめて聞いた。 operator<()か、mapのテンプレートパラメータで適切な比較関数を指定するか、のどちらかやっとけば問題ないはず。
- 453 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 22:20:00.80 ID:jzV+DAcw.net]
- ある程度長くなるなら、ラムダじゃないほうが良くない? そうでもない?
- 454 名前:デフォルトの名無しさん [2016/03/18(金) 23:38:29.84 ID:BXTY6QO1.net]
- 実行ファイルにバイナリファイルやテキストファイルなどを同梱したいのですが、どうやればいいのでしょうか?
- 455 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 23:41:49.45 ID:fdaB6v5T.net]
- ソースファイルへ変換する。
- 456 名前:454 [2016/03/19(土) 01:01:05.43 ID:09FPc+yt.net]
- >>455
それだと起動した時のメモリ使用量がスゴイことになりませんか? jarみたいにできたらいいのですが…
- 457 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/19(土) 01:38:48.87 ID:qPghKix4.net]
- >>456
zlibを使う
- 458 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 02:01:48.98 ID:ojXVuQaH.net]
- どれぐらいのサイズのものを同梱したいんだろ。
メモリを気にするってことは PCなら数百MBを越え、でかいときには楽に1GB越えるサイズかな。 ひょっとしたらターゲットが組み込みマイコンで小メモリなのかな
- 459 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 04:25:33.28 ID:A8zNJX4o.net]
- >>454
リソースに追加
- 460 名前:デフォルトの名無しさん [2016/03/19(土) 05:34:50.36 ID:u4PbgbYy.net]
- 組み込みなら好きな場所にファイルを書き込めるんだから実行バイナリにくっつけるメリットが無い
- 461 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 06:22:04.15 ID:aVqCTfNk.net]
- >>460
> 組み込みなら好きな場所にファイルを書き込める 意味わからん 今時 Linux や Windows Embedded 使ってる組み込みなんていくらでもあるのに
- 462 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 07:17:32.18 ID:fKG0+8Dg.net]
- >>454
Windows + Visual Studio ならリソースに突っ込むのが一番簡単 でもゲーム開発とかなら別個にパックするファイルを用意した方がいい
- 463 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 09:27:46.68 ID:oD5CZDwR.net]
- >>452
なんで operator<() だけでいいのでしょうか?
- 464 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 09:32:44.77 ID:i3aw7Uuy.net]
- むしろless以外(同値判定など)がどうして必要なのか
- 465 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 09:59:57.29 ID:tKkEJPlU.net]
- mapは内部で要素に順序をつけて管理しているため、strict weak orderを満たすlessが必要
順序づけ(要はsort)の条件を指定するのに==では足りないだろう。
- 466 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 10:18:49.25 ID:i3aw7Uuy.net]
- しまったまた自演に反応してしまった
- 467 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 10:28:37.96 ID:/R8BseZf.net]
- >>463
operator<があれば同値判定も出来るからというのが本当の答え !(a<b) && !(b<a)ならa==b
- 468 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 10:42:20.95 ID:oD5CZDwR.net]
- >>467
ありがとうございます.
- 469 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 11:56:29.54 ID:i3aw7Uuy.net]
- >>467
どうしてそう息を吸ってはくような嘘をつくのか
- 470 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 12:07:33.31 ID:i3aw7Uuy.net]
- mapのキーの話か
勘違いした失礼>>467
- 471 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 12:33:51.72 ID:P4VbUWO2.net]
- 変数名はhogeとfooとunkoのどれがいいですか?
- 472 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 14:29:27.12 ID:SYQTFOu+.net]
- 昔はhogeは通用したけど、今時の若い衆にいきなり使うと、なんなのこの人と思われることがあるらしい
- 473 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 14:53:53.05 ID:g1UHnDq8.net]
- 昔から「hoge=コミュ障」というイメージです
- 474 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 15:06:03.88 ID:4a76PkUY.net]
- enumと文字列を同時に宣言するマクロを組んでいるのですが、
#define STR(head ,name) head ## name #define MAKE(...) \ typedef enum _ENUM{ \ STR(ENUM_,__VA_ARGS__ ),ENUM_Num \ } ENUM; \ const char *Name[ENUM_Num] ={ #__VA_ARGS__ }; というマクロで MAKE(one,two,three) とすると、本来はENUM_one ENUM_two ENUM_three というenumの要素が得られるはずなのに、 なぜか生成されるのはENUM_one two threeの三つになってしまいます。 Visual Studio 2015 CommunityのIntelisenceでのエラーなのですが、 これは本来は予期している結果が得られているのでしょうか? それともこいつが言うように実際は後者のような宣言になっているのでしょうか?
- 475 名前:デフォルトの名無しさん [2016/03/19(土) 15:37:01.96 ID:4a76PkUY.net]
- >>474です
すみません。ものすごい馬鹿な勘違いをしていました。__VA_ARGSは,も含めてそのまま放り込む ためのものなんですね。
|

|