1 名前:デフォルトの名無しさん (ワッチョイ 3b96-ov1m) mailto:sage [2017/07/29(土) 11:28:28.97 ID:o30VDF4g0.net] 次スレを立てる時は本文の1行目に以下を追加して下さい !extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part130 mevius.2ch.net/test/read.cgi/tech/1490917669/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 echo.2ch.net/test/read.cgi/tech/1478440682/ ■長いソースを貼るときはここへ。■ 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 VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
59 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:36:43.63 ID:UcwPIhci0.net] >>58 https://ideone.com/Y4LPCV 改善:3, 4, 5, 6, 7 保留:1, 2, 8, 9
60 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:40:37.13 ID:hewgQardr.net] いやそこは無視するだろ普通 >hoge.get()->*(hoge->g2()) = 54321; もう何が何だか…
61 名前:C言語ますたー《ますたー軍団(常時募集)の長》 [2017/08/09(水) 18:43:38.11 ID:s1XZJ5NhM.net] 読んでないけどg()は関数ポインタを返す関数? 設計からしてダメだろ
62 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:53:35.78 ID:VsUePcYe0.net] 既存のクラスに手を入れてる時点でキモイ。 それならもっとやりようあるでしょ。
63 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 19:13:08.58 ID:UcwPIhci0.net] >>61 メンバのオフセット(たぶん) ->* ::* 使用前提のやつ >>59 は一箇所どうにもこうにもならないので放置している部分がある ともかく笑いのネタというより他にない
64 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 10:59:10.70 ID:vqPWBCRZr.net] >>63 遠慮せずともじゃんじゃんプライベートにアクセスしてよいぞ ideone.com/BJHsgK
65 名前:はちみつ餃子 mailto:sage [2017/08/10(木) 11:21:25.23 ID:eseR3mB40.net] >>63 オフセットして実装するのが普通だと思うけど、メンバ変数へのポインタがオフセットで実装されるとは決まってないんじゃないの?
66 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 13:08:18.43 ID:rA3728Ge0.net] C++の場合クラス(およびその基底クラス)内のメンバは全部ヘッダファイルを辿っていけばワカルのだから まず全く同じ内容のヘッダファイルのコピーを作り、 ファイル名を適当に変えて、多重インクルード箇所もコピーしたもので閉じるように変更して、 privateやprotectedを全部publicにして、 クラスの名前をFoo→Foo2とか改変して、 仮想関数は適当に空の定義でもつけて、 ((Foo2*)p)->(Fooのデータメンバ) 式にキャストしてアクセスすればデータメンバと仮想関数については問題なくアクセスできる (ODR違反は都市伝説なので事実上これで動く だいたいprivate破りを意図している時点で実コードレベルで影響しない規約とか気にしても仕方が無い
67 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 13:10:51.21 ID:rA3728Ge0.net] Foo2の仮想関数が空ではないか、というのは動作上問題にならない vtableのしくみがわかっているならワカル以下略 一方非仮想関数の方はちょっとうまい方法が思いつかない… private属性のメンバ関数のアドレスがとれれば勝つるのだが
68 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 15:28:00.96 ID:CTzRRQx/0.net] class Base { public: Base() {}; virtual void func() {}; }; class Sub: public Base { public: Sub() {}; virtual void func() {}; }; Sub a(); std::vector<Base> b; b.push_back(a); b[0].func(); これだと継承前のBaseのfuncが実行されてSubのfuncが実行されないんですが Subのfuncを実行するにはどうしたらいいですか
69 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 15:45:01.75 ID:GPxw37uF0.net] そりゃpushするときにBaseへの暗黙の型変換かかるからダメっしょ ポインタつかえよBaseの
70 名前:デフォルトの名無しさん [2017/08/11(金) 15:47:46.79 ID:L0uHlCp20.net] >>68 そのコード本当に動く? 本質じゃなくて申し訳ないが、そのまま追試出来るコードじゃないと… ちなみに質問の回答はスライスな。
71 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 15:57:28.65 ID:GPxw37uF0.net] おかしいな、確かに コピーコンストラクタもないのにコンパイラ通るのかコレ
72 名前:デフォルトの名無しさん [2017/08/11(金) 16:00:31.30 ID:L0uHlCp20.net] コピコンは省略可能だよー。
73 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 16:11:31.54 ID:CTzRRQx/0.net] >>69 ありがとうございます ポインタにすることで解決しました >>70-71 動かしてるコードを簡略化したのでもしかしたら動かないかもしれないです
74 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 16:51:11.96 ID:+GdUPlS/r.net] 「本当に動く? (中略) そのまま追試出来るコードじゃないと…」 ↓ 「もしかしたら動かないかもしれない」 これがアスペというやつだな
75 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 16:54:58.31 ID:mfxycmdp0.net] 会話としては成り立ってる
76 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 17:09:12.83 ID:MFH9oRFs0.net] この言語はどこの業務で使われてるの? 組み込み・制御はC++使ってますとか言いながら大体これCじゃん!だから論外として
77 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 17:11:30.49 ID:Ca8C76qb0.net] gcc が c++ で書き直された、という話はあったな
78 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 17:29:47.32 ID:fw1fdXf30.net] >>76 https://github.com/search?utf8=%E2%9C%93&q=language%3AC%2B%2B+stars%3A%3E%3D1000&type=Repositories
79 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 18:02:24.77 ID:bpB/tg4h0.net] Webブラウザとかゲームとか
80 名前:はちみつ餃子 mailto:sage [2017/08/11(金) 18:34:36.55 ID:eZ0/1svY0.net] >>76 Better C として使ってもええんやで
81 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 19:29:34.92 ID:rA3728Ge0.net] >>76 Simulaの置き換え
82 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 20:50:37.74 ID:W25jNYVm0.net] C言語としてg++使ってる
83 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 21:45:37.12 ID:U5fbDsCj0.net] ウチじゃモータ制御に使ってるな
84 名前:デフォルトの名無しさん [2017/08/12(土) 16:56:14.99 ID:srjAo6Ap0.net] 質問です。 宣言は、全ての要素に対して必要なのですか? n = a+b: という行があるとすると、 #include <n> #include <a> #include <b> が必要なのですか? とても初心者なので、なにとぞ教えてください。 お願いします。
85 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 17:13:58.34 ID:AoA5DjYT0.net] 意図がわかりにくいがその場合だったら#include <n> だけあればいいんじゃないの? そうでないとしたらinclude順は#include <a>と#include <b>を先に書くべき。
86 名前: mailto:sage [2017/08/12(土) 17:17:09.90 ID:lBXwiOpA0.net] >>84 #include は宣言じゃない 多分 int n; int a:; int b; のことじゃないかな?
87 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 17:21:05.88 ID:Yn7dYYpz0.net] >84 #include というのは、外部にあるファイルを読み込め という命令なので、変数の宣言ではありません。 #include <a> というのは、aというファイルを読み込めという 命令です。 n=a+b という場合には、この式の前に、n, a, bという 変数の型を宣言する必要があります。 全てが整数ならば、 int a, b, n; 単精度実数ならば float a, b, n; と、倍精度実数ならば、 double a, b, n; と書きます。 と変数の型を宣言します。 このことは、基本の基本なので、解説書の最初に書いてあるはずです。 解説書をよく読んで、その上で分からないことを 質問しましょう
88 名前:84 mailto:sage [2017/08/12(土) 17:27:53.44 ID:srjAo6Ap0.net] >>85-87 様 googleだけの独学なので、とても勉強になりました。 とても、ありがとうございました。
89 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 17:28:31.16 ID:AoA5DjYT0.net] 文字通りの意味だったのかよ
90 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 18:07:41.60 ID:B05a5g6/r.net] >#include <a> >というのは、aというファイルを読み込めという命令です。 んなこたーない
91 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 18:16:01.28 ID:B05a5g6/r.net] >>87 >この式の前に、n, a, bという変数の型を宣言する必要があります それは規格のどこに書いてあるのですか?
92 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:18:12.75 ID:qkSSCQjy0.net] DEFINEもincludeも本質的にやってることは同じだしファイルを読み込めは間違ってるな
93 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:23:05.89 ID:6XNTCj+p0.net] includeがファイルをその位置に展開しろっていうのはあってると思うけど、何が不満なんだ? defineはただの文字列置換。
94 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 21:29:22.94 ID:B05a5g6/r.net] × #include <a>というのは、aというファイルを読み込めという命令 ○ #include <a>というのは、aというヘッダーを読み込めという命令 ○ #include <a>というのは、#include <a>をaというヘッダーの内容で置き換えろという命令
95 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:23:06.24 ID:AoA5DjYT0.net] またヘッダー警察が来るぞ
96 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 23:15:33.63 ID:wV3c1N0ta.net] >>84 のレベルの人に説明するのに、厳密な用語をどうこういうより、>>87 レベルの説明の方が適切だろう
97 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 23:26:56.30 ID:IKUtZym10.net] 仕様だとヘッダーとソースファイルは区別されてるみたいだけど #includeはヘッダーとソースファイルのどちらも扱うから 二つを纏めてファイルと呼称しているとしたら>>94 は間違いじゃないの?
98 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 06:37:43.35 ID:/9jKf3580.net] 「C++の#includeがファイルを読み込むとは限らない」 という説明を何かで読んだ記憶がある。 例えばソースに #include <hoge.h> と書いてあっても hoge.h というファイルの実体は存在しなくて、 コンパイラが内部的なスイッチとして使っても構わない、みたいな話。 実際にそういう動作をするコンパイラは知らんけど。
99 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 07:15:34.96 ID:CgemGkhrr.net] >>97 もとの>>87 は#includeでなく#include <>なのだが >二つを纏めてファイルと呼称しているとしたら いきなり自分の結論を大前提に置かれても まあこのへんはC++17で少し変わるだろう
100 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 11:33:24.03 ID:P6N6OiXF0.net] CSVファイルを読み込むときに#include使うことある
101 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 20:57:49.74 ID:R0DVX6mKM.net] てか、学ぶなら1冊くらい本買えよ Googleで独学とか効率悪すぎる
102 名前:はちみつ餃子 mailto:sage [2017/08/14(月) 00:14:24.38 ID:N3oVMbyu0.net] 軸がわからないと自分が何をわかってないかすらわからないからクソみてぇな思い込みで検索して見当違いの方向に突っ込んでしまうから、 そうなってから質問しても質問が見当違いすぎて回答しようがないことはよくある。
103 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 18:55:44.72 ID:Q70B1fQS0.net] >>102 いっちょコンパイラを書いてやろうと思っているんだが何をやっていいかわからない… 手元の教科書は必死に正規表現やらチューリングマシンやらを追求している… これってコンパイラ本だと思って買ったのだが、どうも本を間違えてしまったらしい 軸がわからないと悲惨ですね
104 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 19:28:20.65 ID:GzAS59pw0.net] >>103 スゲー古い本だけどこの辺りを参考にするとか https://www.amazon.co.jp/dp/4782850573
105 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 19:38:22.48 ID:AjDM7F7/0.net] ideone.com/RcWgQx これ、C++17でできるようになるんだっけ?どうだっけ?
106 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 19:51:33.69 ID:nijih07Br.net] 少なくとも似たケースを支援する機能は追加されるがそのままでは通らない [*this]
107 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 19:53:35.30 ID:nijih07Br.net] と思ってよく読んだら関係無かったしTは生存期間内だった つまりC++17では無理
108 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 19:56:48.90 ID:AjDM7F7/0.net] そうなんだ。ありがとう。 またウインドウを出せないのか。 綺麗なウインドウクラスを書く日は遠い・・・。
109 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 19:59:11.57 ID:vSz72Ekj0.net] >>103 LLVMのtutorialでもやってみたら? (↓の一番上) https://llvm.org/docs/tutorial/ たしか日本語訳もあったと思うけど、内容が古いので注意。
110 名前:デフォルトの名無しさん [2017/08/15(火) 20:03:18.47 ID:BftRsONU0.net] >>103 yacc, lex (または bison, flex) とかは知ってる? 使うと構文解析が楽になるよ。
111 名前:デフォルトの名無しさん [2017/08/15(火) 21:06:58.79 ID:K8T9Hr6g0.net] >>108 単にstd::function使えって話じゃねーの?
112 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 21:16:01.46 ID:AjDM7F7/0.net] >>111 WindowsのウィンドウをWin32APIで出すときは、Cのインターフェースに渡さないといけない。 なので、デフォルトキャプチャにthisのアドレスコピーが入ってくれないと厳しい。
113 名前:デフォルトの名無しさん [2017/08/15(火) 21:38:42.75 ID:K8T9Hr6g0.net] >>112 typedef bool(*Fun)(); にキャプチャしたデータを置いとく場所が無いんだからいつまでまっても実現しないよ そういうC言語のAPIにはvoid*でユーザーデータ渡せて引数で取得できるようになってるはずなんだからそれに規則性があるのなら(例えば最初の引数がユーザーデータになってるとか)テンプレートでラッパー書くの簡単でしょ
114 名前:デフォルトの名無しさん [2017/08/15(火) 21:53:17.41 ID:+1mFvI7w0.net] >>105 できるも何も型が違うからエラーでしょ。 ラムダ型のオブジェクトはautoでしか受けられない。
115 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 23:43:23.71 ID:AjDM7F7/0.net] >>113 クロージャって知らない? >>114 条件を限定することで関数ポインタに束縛できるようになりました。 まぁ今回書いたのは願望ですけど。
116 名前:デフォルトの名無しさん [2017/08/15(火) 23:55:50.09 ID:K8T9Hr6g0.net] >>115 キャプチャしないラムダ式は関数ポインタに変換出来るだけ。束縛じゃない。
117 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 23:58:52.92 ID:AjDM7F7/0.net] あぁ、語弊があったね。ゴメン。
118 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 06:02:38.98 ID:1FqF77kw0.net] クロージャがどのように実装されているか調べてみることを勧める。 そしてそれをC言語の関数ポインタと互換性がある形で実装可能か考えてみるといい。
119 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 06:31:25.68 ID:3XX715Yb0.net] >>117 だよ。 駄々っ子みたいになってるが、 スレッドローカルみたいな変数を持たせれば持てないことも無いと思う。 まぁ、もうできないことはわかったので抜けます。
120 名前:デフォルトの名無しさん [2017/08/16(水) 12:58:58.53 ID:+9oABFYpM.net] もういない宣言出てるけど、スレッドローカルでやられても困るだけだと思う。
121 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 14:20:28.94 ID:5HjXxUQN0.net] >そしてそれをC言語の関数ポインタと互換性がある形で実装可能か考えてみるといい。 もともとC言語はλ式とか、(束縛変数がクラスのこともありえるが)クラスを構文でサポートしていないのだから 「C言語の関数ポインタと互換性がある形」と逝っただけでは何を指しているのか不明確にならざるおえない 呼び出し側がいかに煩雑な記述になろうとも、動けば互換性があるという立場をとってみるテスト、 束縛変数も毎回引数渡しすればC言語の関数ポインタと互換にできるのでは… もはやクロージャでも何でも無いが一応動く
122 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 14:36:46.12 ID:53LlWcImr.net] >>121 >もはやクロージャでも何でも無いが一応動く ちなみにどうでもいいことだがラムダ式から取得した関数ポインターはC++リンケージ型なのでC関数に渡してコンパイルが通る保証が無い
123 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:18:13.19 ID:5HjXxUQN0.net] >>122 関数ポインタ経由の関数呼び出しに関数名のマングルは関係無いのでは… [] [ここ壊れてます]
125 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:34:56.89 ID:53LlWcImr.net] >>123 関数名だけではない extern "C" using CF = void(); と using CPPF = void(); は似て非なる関数型 この二つはオーバーロード可能で互換性も無い 恐らくマングリのみならず関数呼び出し規約の違いを許容する思想 ただこれを正しく実装したコンパイラーを見たことは無い
126 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:57:26.34 ID:07vifjzr0.net] 「正しく実装」すると互換性がないってこと?
127 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:59:31.27 ID:CMzvSoma0.net] a = 0 2.times do b = 1 3.times do p a, b end end 「Rubyのしくみ」に書いてあるけど、Rubyは、Cで作ってあり、 do 〜 end のブロックは、クロージャの実装。 ラムダ・Proc も、ほとんど同じ 子のブロック内で、変数が見つからなければ、 外のスコープ(先祖の方向)へ遡って、探しに行く
128 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:07:27.94 ID:53LlWcImr.net] >>125 そのとおり 規格では別の型と規定されている atexitなど関数ポインターを渡す関数ではCリンケージの関数ポインターを渡すかC++リンケージの関数ポインターを渡すかで C版atexitとC++版atexitのオーバーロード呼び分けができることになっている clang/G++は意図的に規格に従っていないというのが痛説 Visual C++は規格より自分が正しいという意味不明な見解
129 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:16:58.46 ID:07vifjzr0.net] や、互換性がない→別の型 は真でも 別の型→互換性がない はそうじゃないような。
130 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:31:53.97 ID:53LlWcImr.net] そのとおりだ 暗黙の変換は禁止されていない ただ暗黙の変換が可能というルールも存在しないので「コンパイルが通る保証が無い」と書いた
131 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:48:50.64 ID:07vifjzr0.net] なるほど。 上の方で原理的に無理みたいなことが書いてあった気がしたので念のため。
132 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 18:09:49.22 ID:VpF+jov/0.net] マングリングっていやらしいよな
133 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 18:35:35.31 ID:lmNMFTOO0.net] そういうCのインタフェースにはたいてい関数ポインタの他にユーザデータを指定できるようになっててそこにthisなんかを入れておくものだが、 >>105 は関数オブジェクトを関数ポインタだけに変換したいと言っているわけか…… コードを動的に生成すれば不可能ではないだろうけど、色々トレードオフがあるから言語の機能にするのはどうだろうね。 ライブラリを作っても良いんだろうけど、おとなしく定石に従っておいた方が良いよ
134 名前:デフォルトの名無しさん [2017/08/16(水) 22:53:19.96 ID:VOMe5hsv0.net] >>132 動的にコードを生成したとしてもどこにその生成したコードを置くのか、それをどうやって解放するのかが問題になるね。だったらコード生成してもしなくても同じ事。
135 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 23:14:18.00 ID:lmNMFTOO0.net] >>133 > 動的にコードを生成したとしてもどこにその生成したコードを置くのか、それをどうやって解放するのかが問題になるね。 そうだね。 > だったらコード生成してもしなくても同じ事。 同じではないね。
136 名前:デフォルトの名無しさん [2017/08/16(水) 23:47:46.20 ID:VOMe5hsv0.net] >>134 言い方が悪かったかな? 「どこにその生成したコードを置くのか、それをどうやって解放するのか」が解決するのであれば、コードを動的に生成しなくてもキャプチャしたデータ自体をそこに置けばいいだけ。
137 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 02:40:17.43 ID:PxJqlDv90.net] >>135 キャプチャしたデータ(またはそれへのポインタ)をコード以外のどこかに置くとして、それは関数ポインタ一つ(コードへのポインタをとるCのAPIにそのまま渡せる形)にはならないだろ。 何の話をしてるんだ?
138 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 05:10:47.78 ID:gXVZW44o0.net] WTL/ATLでそれっぽいことをやってるね。 hp.vector.co.jp/authors/VA022575/c/msgmap.html
139 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 08:39:28.71 ID:rYxoi1+/d.net] MS は mfc の頃から動的コード生成でやってだ記憶がある。 this をロードして jmp みたいな小さいコードを生成して Window Proc として使う。
140 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 09:01:01.55 ID:6E9r52D/0.net] それ動的生成だろ。コードじゃなくてインスタンス。
141 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 10:51:29.58 ID:rYxoi1+/d.net] >>139 コードだっつーの 関数ポインタ一つしか渡せないwindowprocにthisを渡すためにそうやってるんだよ。 なんで知らんのに反論するかなー
142 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 11:04:19.66 ID:OslnP8rdM.net] >>140 ひょっとして各インスタンスにコードが含まれてるとか思ってる? w
143 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 14:38:16.10 ID:B8c7/K0xr.net] >>138 そのサンクらしきものはどこのセグメントに置くの?
144 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 15:30:51.11 ID:PxJqlDv90.net] 自分でソース読めば良いのに。 最近はDEPとかあるから工夫が必要そうだよね、と検索したらこんなのが出てきた。 https://support.microsoft.com/ja-jp/help/948468/applications-using-older-atl-components-may-experience-conflicts-with
145 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 16:53:07.66 ID:6E9r52D/0.net] >>143 MFCのどのクラスに動的コード生成の実装が書いてんの?
146 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 17:43:39.99 ID:PxJqlDv90.net] なんか頭悪そうなのがつっかかってきた
147 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 17:47:21.07 ID:fzzVUP+8d.net] DOS時代は動的コード生成とか良く使ったな
148 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 18:37:40.30 ID:6E9r52D/0.net] >>145 なんで急にキレるんですか? あなたがソース読めとアドバイスしたからMFCのどのソースか聞いただけなのに。
149 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 18:53:03.48 ID:p6ewHhXhd.net] 理解しようという気持ちも理解する力もないのに質問すんなよ… mfc ではやってたっけ?やってないんじゃないの? というツッコミならともかく、 >>141 >>142なんて思考力が虫以下だろ…どこのセグメントとかアホか Win32 は古来よりフラットなリニアアドレスモデルだろ。 VirtualAlloc も知らなそうだし。
150 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 18:56:13.88 ID:wL10pSGX0.net] 質問だと思ってる時点で低能確定やん w まあセグメントと聞いてセグメントレジスタしか頭に思い浮かばない
151 名前:低能はROMってろ [] [ここ壊れてます]
152 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 19:26:52.61 ID:KC+pdSEir.net] >古来よりフラットなリニアアドレスモデル まさかそっちのセグメントに反応するとは予想外だった
153 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 19:47:30.76 ID:6E9r52D/0.net] >>148 だいたいあなたがMFCの頃から動的コード生成でやってたって言い出したんですよ。 だから私はMFCにあるのはインスタンスの動的生成だという指摘をしたんですよ。 そしたら、再度あなたがATLのような実装があるんだと言ったんですよ。 ソース見ろとか言う人までいるから、どのソースか聞いたらキレて、なんで言い出したおまえまでキレんだよ。アル中か? ここは相談室だぞ。
154 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 07:51:05.48 ID:mSCO2cNh0.net] C++を身に着けたいと思いつつも、自分でC++で何かを作るモチベーションが湧かなくって、数千行程度のC++プログラムの写経でもしようかと思ってるのですがおすすめありませんか? SDLを使ったゲームとか興味を持ちやすくて写経しやすいかと思ってgithubとか漁ってるのですがなかなかいいのが見つからなくて悩み中です QtみたいなC++を拡張してるのは勘弁です
155 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 08:26:03.23 ID:cQGhZEXD0.net] あなたが何に興味を持つかなんてわかりません C++以外の技能は?
156 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 09:19:25.85 ID:q7vLALqK0.net] てんそるふろーでも読んでみるとか。 今を時めくフレームワークだよ。
157 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 12:28:43.04 ID:vqpgoPDk0.net] クソだと思うやつを俺が叩き直してやるってやっていればそのうち上達してる
158 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 00:15:55.63 ID:LWJoSxYpr.net] ぜひ叩き直してください!
159 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 10:13:11.47 ID:2Vqw9aXW0.net] >>156 思いっきり叩いてやるからまず自分が書いたソースをどこかにアップしろ