- 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/
- 52 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 11:21:56.71 ID:ltvQNGjy.net]
- >>43 みたいに、複雑な判定が必要なら、
そもそも必ず明示的に初期化すべき 多くのコーディング規則でも、 初期化していない値を使ってはならないと書いてあるだろ 未初期化の場合、初期化し忘れたのか、 故意にやっているのか、意図がわからないから困る もし、各コンパイラで挙動が異なったら、 こんなバグや意図を突き止めて、修正するのは大変
- 53 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 13:35:15.59 ID:aFHEViKg.net]
- >>50
素人が適当なウソを無責任に書き散らしているサイトが多いが、 「どこでも」と言うなら、Cの構造体の初期化について書いてあったんだろう。 要約するとお前が間抜け
- 54 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 14:05:39.64 ID:4c1IOC2x.net]
- >>50
C++の文脈でPODと非PODの違いにも触れずに={}で一律にゼロ初期化されるなんて 書いてるバカなサイトなんて見たことないんだが? どこでもっていうなら3つくらいは挙げてくれ
- 55 名前:デフォルトの名無しさん [2016/02/23(火) 14:15:32.01 ID:UeUvEN3+.net]
- >>54
列挙しても特に意味ないので 意味があるならやりますけど
- 56 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 14:24:32.35 ID:4c1IOC2x.net]
- もうお前はいいよ相手にしちゃいかんやつだ
- 57 名前:デフォルトの名無しさん [2016/02/23(火) 14:37:12.48 ID:UeUvEN3+.net]
- 突然絡んできてもういいよとは何が何やらわかりません
どうしてしまったんですか
- 58 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 20:17:07.10 ID:bPGlp/ev.net]
- >>55
意味ならあるだろ >>54は={}でゼロ初期化されるなんて書かれているサイトは見たこと無いって主張していて、 君はその逆に、どのサイトを見ても={}でゼロ初期化されるって書いてあると主張している。 どちらが正しいか証明したければ 君が知ってるサイトを片っ端から挙げるべきなのは分かるね? 逆に君がそうしない、又は出来ないというのなら君が単に嘘ついて炎上学習したって事になる。
- 59 名前:デフォルトの名無しさん [2016/02/23(火) 20:24:46.11 ID:MF5ot8kL.net]
- >>58
嘘もついてないですし自分の正しさを証明する必要も意味もないので 貼るなら正しい仕様を理解するための参考になるサイトを貼ってくれる方がいいですね ダメなサイトを貼る意味ってあります?
- 60 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 20:34:32.34 ID:xDQTJcBy.net]
- >>59
興味があるので、ゼロ初期化と書いてあるサイトを教えていただけませんか? 今回だけ特別に教えて欲しいです。 代わりに参考になるサイトを紹介します www.open-std.org/ →WG21→papers N4567がオススメです
- 61 名前:デフォルトの名無しさん [2016/02/23(火) 20:48:31.49 ID:MF5ot8kL.net]
- >>60
そこは知ってるので別の所お願いします
- 62 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 23:03:35.63 ID:bPGlp/ev.net]
- >>59
背理法って知ってる?
- 63 名前:デフォルトの名無しさん [2016/02/24(水) 06:55:08.54 ID:iraD9m85.net]
- >>62
熱膨張的な物言いでカッコいいですね
- 64 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 07:00:00.19 ID:iS9soXkB.net]
- ボク自身も熱で膨張しそうです
- 65 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 08:48:53.60 ID:qiLj0DES.net]
- 熱くたぎる怒張がどうしたって?
- 66 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 12:21:03.69 ID:CiZ4HRqF.net]
- >>62
ム板じゃないところに来てるかと思って板名見なおしたぞ
- 67 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 14:23:42.94 ID:4ZA9ynQM.net]
- >片桐 はいり(かたぎり はいり、1963年1月18日 - )は、日本の女優。
>本名、片桐 由美(かたぎり ゆみ)。東京都大田区出身。 >スターダストプロモーション芸能1部所属。
- 68 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 20:35:27.44 ID:qiLj0DES.net]
- はいりはいりふれはいりほー
- 69 名前:デフォルトの名無しさん [2016/02/24(水) 21:23:02.15 ID:wSKjAMnV.net]
- int a = int();
a = int(); のint()はどういう意味ですか 一行目と二行目のint()に違いはありますか
- 70 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 21:27:07.75 ID:f7gTsPBB.net]
- 一行目、aをコンストラクトする。
二行目、コンストラクトした一時オブジェクトをaに代入する。
- 71 名前:デフォルトの名無しさん [2016/02/24(水) 21:31:59.33 ID:iraD9m85.net]
- 一行目は一時オブジェクトは作成されないのですか
- 72 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 21:44:13.38 ID:t5G9cIIP.net]
- qiita.com/hmito/items/9f4bdc8442b6f6b3c7bc
結構面白かったです。
- 73 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 22:14:05.66 ID:ZvNmPlpt.net]
- >>71
知ってるくせに
- 74 名前:デフォルトの名無しさん [2016/02/25(木) 09:45:38.74 ID:pcAVTpJw.net]
- int();
と int(0); は何が違うんですか
- 75 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 09:50:39.66 ID:pDSMfAMl.net]
- int(0)の方が1文字多い。そしてより明示的
だけどよっぽどの偏屈者じゃない限りint()とかint(0)とか書かない
- 76 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 20:29:55.94 ID:/tM+b5YW.net]
- int()はint型の値初期化によって得られる値
int(0)は0をintにconst_castした結果
- 77 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 23:46:46.50 ID:Y3PURJ2y.net]
- auto i = int{}; はフツーだろ?
auto j = int{0}; は変人
- 78 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 00:43:33.92 ID:VN+AWD5G.net]
- いやいやフツーはint i = 0;だろw
- 79 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 02:27:23.53 ID:JkkprwN3.net]
- int i {0}; // だろ
- 80 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 02:57:45.65 ID:sByuqtKs.net]
- 宣言と初期化に関して、いろんな表記が有りすぎて笑えないレベルだな
コンストラクタなのかキャストなのかも分かりにくいし 最高です
- 81 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 06:59:41.78 ID:L7RTVb9K.net]
- しかしnewでクラス作成時にメンバを全ゼロ初期化する方法がないんだな
- 82 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 07:10:06.43 ID:FbdyjvxV.net]
- ちょっと何言ってるかわからない
- 83 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 07:44:52.80 ID:L7RTVb9K.net]
- しかしnewでクラス作成時コンストラクタ呼出し前にメンバを全ゼロ初期化する方法がないんだな
- 84 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 07:48:12.67 ID:L7RTVb9K.net]
- DelphiとかBCBだとTObject派生物はゼロ初期化されるが
標準C++規格でのやり方では聞いたことが無い
- 85 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 08:01:04.93 ID:Pw5RFD2X.net]
- 自分が知らない、聞いたことがないことを
方法が無いと断定する低能には難しいだろうな
- 86 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 08:04:28.09 ID:tJ1gUyHd.net]
- 初期化はコンストラクタでやるもんだと思うが、なぜコンストラクタ呼び出し前に
そんなことやる必要があるんだろうか。
- 87 名前:デフォルトの名無しさん [2016/02/26(金) 08:28:20.75 ID:ouDcFdqg.net]
- char p[sizeof hoge]={};
new(p) hoge(); で
- 88 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 08:53:49.35 ID:L7RTVb9K.net]
- >>86
初期値がゼロのメンバ変数はいちいち初期化する面倒が不要になる
- 89 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 10:15:10.11 ID:OlJixx6H.net]
- struct X { int a, b, c; }
X *x = new X({0, 0, 0}); これを簡略化したいってことか?
- 90 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 12:19:06.42 ID:h1q56VEq.net]
- new X() で済む話だよね。
- 91 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 18:27:57.97 ID:Pw5RFD2X.net]
- これでおk
struct baka { int p; baka() = default; baka(int p) : baka{}, p{p} { } };
- 92 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 18:43:51.81 ID:AYRtcLu9.net]
- struct baka {
int a=0; bool b=true; baka() = default; }; でええやん
- 93 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/26(金) 18:45:56.98 ID:6Zondczs.net]
- struct tensai {
int a=0; bool b=true; };
- 94 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 19:38:43.59 ID:VKP1Cmo0.net]
- 0で初期化すれば安心って、それ自体が間違ってる気がする。
- 95 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 20:27:08.19 ID:5826a3fE.net]
- PostMessageを監視すべし
- 96 名前:デフォルトの名無しさん [2016/02/26(金) 23:25:03.72 ID:yiTr60/V.net]
- double型の行列とcomplex<double>型の行列演算結果がcomplex<double>
型になるように型拡張を行うには何のテクニック使ったらいい? あ、単純な演算子のオーバーロード使うと結構大変だから(できんわけではないが) テンプレートテクニックとかうまく使えないかな。
- 97 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 23:45:09.61 ID:zaiZLpHx.net]
- 演算子のオーバーロードが一番いい
- 98 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 00:58:43.79 ID:e3stW6O/.net]
- なにをいってるかわからんな
行列の個々の要素ごとにdoubleとcomplex<double>で四則演算するなら 結果は自動的にcomplex<double>になるだろ
- 99 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 01:54:26.55 ID:pvHfkl8D.net]
- complex<double>をベクトルとみなして、doubleをスカラとみなすのか
そういう演算はC++では普通標準で用意しないから自分でオーバーロードすればいいじゃん
- 100 名前:デフォルトの名無しさん [2016/02/27(土) 01:57:02.77 ID:C/ecoBXH.net]
- TVアニメ『NEW GAME!』というのを知り、漫画を読みました。
無職5年目ですが、ぷろぐらむ(C++)Win32 アプリケーションを使い ゲームを製作(勉強)したいと思いました。 お勧めの参考書籍やサイトが有りましたら教えて下さい
- 101 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 02:32:29.58 ID:wxfsuIHK.net]
- >>96
行列クラス自分で作るつもりなら当然行列どうしや行列とスカラーの演算子も定義しなきゃいかんわな 俺ならそんなもの自作しないで既存の行列演算ライブラリ(例えばeigenとか)使うけど ちなみに>>98が言ってるようにdouble型とcomplex<double>型のスカラー演算結果は標準でcomplex<double>になるよ
- 102 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 03:47:18.73 ID:0gtZVCNd.net]
- >>100
ここは怖い人ばかりなので初心者スレへどうぞ
- 103 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 04:15:41.61 ID:EVLCSxnr.net]
- >>102は会話のできないアスペ
- 104 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 09:03:39.57 ID:vL66Pzde.net]
- >>96
もしかして、このあたりの話をすればいいのかな? stackoverflow.com/questions/17013655/how-to-use-decltype-to-determine-the-result-of-an-addition これが「結構大変だ」と言っていたのならすまぬ。
- 105 名前:デフォルトの名無しさん [2016/02/27(土) 09:52:02.29 ID:HsyJ5PWO.net]
- >>104
ありがとう。 スカラー単位の型拡張はあたりまえだけど、double型を要素とする 行列をcomplex<double>型の行列に型拡張するときどうするんだろ と思ってね. やはり要素レベルでtraitsを使って,traitsで定義した型を要素と する行列を作るのが正攻法かなあ。C++14だともっとエレガントに できないかな? 紹介してくれた所を見てみるよ.
- 106 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 12:31:21.47 ID:hVqcAFgk.net]
- 手法にこだわって目的を達成できない典型的パターンだな。
- 107 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 16:53:21.38 ID:tW+Ks6U1.net]
- 目的がオナニーだから問題ない
- 108 名前:デフォルトの名無しさん [2016/02/27(土) 18:46:59.39 ID:HsyJ5PWO.net]
- 馬鹿には好きなだけ言わせとくよ
- 109 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 20:19:31.60 ID:qyipvj4l.net]
- 初心者の口から出る「エレガント」に反吐が出る
- 110 名前:デフォルトの名無しさん [2016/02/27(土) 20:25:42.58 ID:HsyJ5PWO.net]
- はいはい、キチガイ犬w
- 111 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 20:43:20.31 ID:e3iZnQnQ.net]
- #ifndef INCFILE_H_
最後のアンダーバーは何のためにあるですか?
- 112 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 21:54:26.15 ID:TnvXsjWd.net]
- 反吐が出ると言って本当に吐いてるやつを見たことがない
- 113 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 21:57:54.41 ID:EVLCSxnr.net]
- 自然言語の言い回しも理解できない低能には
プログラム言語は難しいだろう
- 114 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 22:06:17.26 ID:EVLCSxnr.net]
- >>111
低能が書いた#defineによる定数と 名前を衝突しにくくするためだろうきっと
- 115 名前:デフォルトの名無しさん [2016/02/27(土) 22:07:02.57 ID:T6Jc3KoX.net]
- ひとつのテンプレート関数内部で'A'とL'A'を自動判別する方法教えてください
int a['A' or L'A']; みたいな
- 116 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 22:26:19.05 ID:TnvXsjWd.net]
- >>113
あのさ、ここは2チャンネルであって、基本的に初心者が集まる場所なんだよ? 昔とは違うんだ。わかるか?
- 117 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 23:38:42.62 ID:bRJMsBK5.net]
- >>116
馬鹿の無根拠な妄言ktkr
- 118 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 23:53:52.62 ID:TnvXsjWd.net]
- もともとは>>109の発言
- 119 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 09:01:53.38 ID:p5UOgBYD.net]
- 昔ってなんだ? ネットニュースか?
- 120 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 09:51:52.96 ID:sxXcnRPc.net]
- >>100
14歳からはじめるC言語オンラインゲームプログラミング 15歳からはじめるDirectX9 3Dゲームプログラミング教室 14歳からはじめるシリーズ~ あと二冊
- 121 名前:デフォルトの名無しさん [2016/02/28(日) 10:59:04.87 ID:yeDT/yDi.net]
- Compositeデザインパターンでcomposite1のchildlenの型をcomponentの配列ではなくcomposite2の配列に限定し、composite2のchildrenはleafのみの配列に限定したいのですが、どのようにしたらいいのでしょうか?
- 122 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 13:29:41.30 ID:w64tNJjH.net]
- それはコンポジットパターンなのか?
- 123 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 13:48:26.49 ID:5n5R60tK.net]
- それだけじゃ型を明示しろよとしか思えんが
- 124 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 14:19:39.94 ID:tz1QY8TO.net]
- そういうふうに組めばいいとしか言いようがない。
組む際に何がネックになってるのかね。
- 125 名前:デフォルトの名無しさん [2016/02/28(日) 17:19:18.45 ID:yeDT/yDi.net]
- >>123
>>124 Compositeでchildrenの型としてComponentを用い、それを継承してComposite1とComposite2を作ったら これらのchildrenの型が自動的にComponentになってしまうのでどこでどうやって型を明示すればよいのか困っております
- 126 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 17:35:13.98 ID:emPXsfmM.net]
- 型を限定したいとか明示したいとか言ってる時点でCompositeパターンを使うのは間違いなんじゃない?
- 127 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 18:05:44.76 ID:jJK+500Y.net]
- 配列要素の型を限定したい(componentの配列ではなくcomposite2の配列に限定したい)というのはいかんともし難い
配列要素の型を明示したいだけなら多態性がわかっていれば問題なくできるはず… ただし、インスタンスの配列で多態性をやるには配列要素の型は基底クラスでなく派生クラスにする必要があり、 派生クラスが2種類(以上)あるcomponentパターンはできない この場合の配列は基底クラスを指すポインタの配列であるべきなのでは… ※ 個人の感想です。
- 128 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 18:27:33.71 ID:fFRYdAaf.net]
- 配列を持つコンポーネントにして、visitorと組み合わせるってのはダメなのかな
- 129 名前:デフォルトの名無しさん [2016/02/28(日) 18:28:25.88 ID:yeDT/yDi.net]
- >>122,>>126
Compositeパターンじゃなくてもいいのですが、childrenに対する操作は同じ操作がたくさんあるので継承したいのです。 しかしcomposite1はcomposite2にしかないメソッドを呼び出すこともあり、この時ダウンキャストするのを出来れば避けたいと思っております。 >>127 やはり限定するのは難しいですか…… すみません、 >配列要素の型を明示したいだけなら多態性がわかっていれば問題なくできるはず というのは何を使って明示することを想定されているのか教えていただけないでしょうか?
- 130 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 19:11:55.42 ID:c40FCrwk.net]
- 登場人物がComposite1とComposite2とLeafだけなら、普通にComposite1::getChild()は
Composite2を返してComposite2はLeafを返せばいいだけだろ。
- 131 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 19:52:22.72 ID:PMSRihXY.net]
- >>125
「これらのchildrenの型が自動的にComponentになってしまう」 ↑ここが何かおかしい。んなわけねーだろ、と。 ほんとうにそんなところまで Composite が制約を加えてるなら、そこが問題。 >>129 ダウンキャストして済むならそれで済ませればいいだろうとも思う。 「避けたい」の具体的な理由があるのかと。
- 132 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 20:57:13.19 ID:gim467qR.net]
- >>129
childrenに対する操作の一部を共通化したいだけなら、 こんな感じでCompositeに共通処理を集めるだけじゃ駄目かね。 template<class Child> class Composite { /* 共通処理 */ }; class Leaf { }; class Composite2 : public Composite<Leaf> { /* Leafだけの処理 */ }; class Composite1 : public Composite<Composite2> { /* Composite2だけの処理 */ };
- 133 名前:デフォルトの名無しさん [2016/02/28(日) 21:20:23.21 ID:yeDT/yDi.net]
- >>131
class composite{ vector<shared_ptr<component> > children; } class composite1:public composite{ } の形で実装したらcomposit1のchildrenはcomponentになると思っていましたが、違ったでしょうか? ダウンキャストを避けたいのは単に私が管理しきれなくなりそうだからです >>132 おっしゃる通りの実装で解決しました。 たしかにtemplateを使えば私の望む動きをしてくれます。 分かりやすく素晴らしい回答大変ありがとうございました。
- 134 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 21:27:42.44 ID:emPXsfmM.net]
- 妙に早いな
- 135 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 21:33:54.60 ID:PMSRihXY.net]
- >>133
配列実体の持ち方を composite で決めてしまっているところが問題だということ。 class composite{ virtual component& nth_child(int n) = 0; } class composite1:public composite{ vector<shared_ptr<compisite2> > children; } こうしておけばよかったんじゃないかと思うんだけど >132 で解決したならいいかな。
- 136 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 22:12:35.00 ID:jJK+500Y.net]
- お禿げ様はインターフェースは一般に最初の基底クラスに全て集まる傾向にあるとはどっかに書いてたが
実装まで最初の基底クラスに集約するのが良い設計なのかどうか… Cmposite1、Comosite2だけならまだしも Cmposite3、Comosite4、…と増えていった場合に都度Compositeクラスのソースコードが編集され、肥大化していくんやで〜
- 137 名前:デフォルトの名無しさん mailto:sage [2016/02/29(月) 05:58:03.54 ID:j6jzPb2d.net]
- Mixin的な使い方に限るなら問題ないでしょう。
継承が嫌なら、Compositeをメンバ変数にするとか、 vectorを受け取る関数テンプレート群にしてしまうとかすればいいし。
- 138 名前:デフォルトの名無しさん [2016/03/02(水) 23:08:12.47 ID:g3p9uXMc.net]
- C++の質問です。
ウィンドウハンドルHWND型を数値化する方法をご教授下さい。 何をしたいのかというと、VisualStudio付属のspy++を使用して、 色々な事をしています。 spy++の各ウィンドウの「ウィンドウ」文字列の右にウィンドウハンドルID?のような、 ウィンドウ毎に一意につけられたIDが表示されています。 このIDを取得したいのです。 なのでウィンドウハンドルHWND型を数値化出来れば、上記spy++のウィンドウハンドルID? と同じ物を取得できると考えました。 よって、ウィンドウハンドルHWND型を数値化する方法をご教授下さい。 ※もしかしたら目的と実施しようとしている事が間違っているかもしれません ※その場合は正しくウィンドウハンドルID?を取得できる方法をご教授下さい
- 139 名前:デフォルトの名無しさん mailto:sage [2016/03/02(水) 23:26:29.94 ID:v5tMoIR7.net]
- >>138
size_t id = reinterprete_cast<size_t>(hwnd);
- 140 名前:デフォルトの名無しさん mailto:sage [2016/03/02(水) 23:57:02.22 ID:9ZwWQH++.net]
- なぜそこでstd::intptr_tでなくsize_tが出てくるのか不思議
- 141 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 05:25:34.43 ID:tlFkd89Q.net]
- しかもreinterpret_cast<&size_t>じゃないとパンニングできないし
- 142 名前:デフォルトの名無しさん [2016/03/03(木) 05:55:57.70 ID:vKHIYEam.net]
- uint32_t id = (uint32_t)(uintptr_t)hwnd;
で問題ないよ
- 143 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/03(木) 06:01:02.75 ID:UnIH0jHm.net]
- >>142
hwndが64ビットの可能性
- 144 名前:デフォルトの名無しさん [2016/03/03(木) 06:03:58.47 ID:vKHIYEam.net]
- >>143
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384203%28v=vs.85%29.aspx
- 145 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/03(木) 06:18:15.21 ID:UnIH0jHm.net]
- #include <cstdint>
uint32_t id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(hwnd)); C++スタイルのキャスト、めんどい
- 146 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/03(木) 06:22:38.14 ID:UnIH0jHm.net]
- Windows限定ならcstdint要らないかな?
UINT id = static_cast<UINT>(reinterpret_cast<UINT_PTR>(hwnd));
- 147 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/03(木) 06:27:13.98 ID:UnIH0jHm.net]
- Win16じゃ動かないんだな
- 148 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 06:42:45.53 ID:+JeDUCvS.net]
- 16ビットオブジェクトを出力できるコンパイラ未だもってんのか?
- 149 名前:デフォルトの名無しさん [2016/03/03(木) 08:31:20.27 ID:6K3/+EIJ.net]
- >>138
ありがとう解決しました。 .Netの世界の文字列型に変換する必要があるので以下としました。 String^ hw_id = static_cast<UINT>(reinterpret_cast<UINT_PTR>(this->hw)).ToString("X");
- 150 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 08:36:11.53 ID:km2vGawV.net]
- >>148
持ってるか? って聞かれたら、 Visual C++ 1.52c が押し入れのどこかに眠ってるはず って答えることにしてる
- 151 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 11:36:15.96 ID:DPHy8aYb.net]
- >>148
昔手に入れたLSI Cの試食版の方ならたしかどこかに・・・
- 152 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 12:03:10.46 ID:mDpo7bQQ.net]
- Cマガ電脳倶楽部
|

|