1 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 10:31:46 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/ スレを勃てるまでもないC/C++の質問はここで 12 pc12.2ch.net/test/read.cgi/tech/1248010352/ スレを勃てるまでもないC/C++の質問はここで 13 pc12.2ch.net/test/read.cgi/tech/1260842197/ スレを勃てるまでもないC/C++の質問はここで 14 pc12.2ch.net/test/read.cgi/tech/1269273471/
255 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 08:07:33 ] あ、俺も知りたい。 Windows自体再起動も終了も出来なくなるし、放置すると全体がフリーズしてすごく困る。
256 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 12:29:22 ] >>254 >>255 CTFMONってプロセスがあったらキルしてからデバッグして味噌
257 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 14:14:42 ] 翻訳お願いします。英語版できいたら分からないといわれました。 The problem here is that our template was instantiated for the type char, which turns out to be too by introducing an additional template parameter AccT の英文は 「この問題はテンプレートは文字型についてインスタンス化されたことのことです。」 コンマまではこの訳であってますよね。その後は, 「witchはまた追加パラメーターACCTの導入によるもでであることがはんめいした」 であってますよね? witchが指すものが前文に無いようにおもえて翻訳できません。 詳しく教えてください。
258 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 14:28:02 ] whichはproblemにかかってるんじゃねーの?
259 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 14:34:52 ] >>258 翻訳してください。
260 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:17:53 ] >>258 なら「この問題」
261 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:19:39 ] >>256 ありがと。今度なったら試してみる。
262 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:22:35 ] which turns out to be too がわからない。 この too は何だ?
263 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:23:18 ] tooは 最後につけるところを真ん中につけただけ。
264 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:24:18 ] >>263 じゃ、 be の補語は? exist の意味のbe?
265 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:25:10 ] which turns out to be (instantiated) too かなあ。
266 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:26:36 ] beの補語はby以下らしい。
267 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:30:55 ] 関係代名詞はbeの補語ではなくて主語になるらしい。
268 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:34:23 ] この問題は追加テンプレートパラメーターAccTの導入からも、 存在することがが明らかになる
269 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:37:29 ] まとめて訳すとこんな感じか? ここでの問題は、追加テンプレートAccTの導入からもわかるように、 我々のテンプレートが文字型についてインスタンス化されてることです。
270 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:40:13 ] ありがとうございました。
271 名前:デフォルトの名無しさん [2010/05/31(月) 17:22:57 ] 質問です。C++2008には #pragma ○○ ・・・ #pragma end○○ と書けば横の+、−でコードを格納できたと思いますが、 忘れてしまったので教えてもらえませんか?
272 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:58:12 ] region
273 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 10:42:15 ] staticってどういう時に使うの? なんでグローバル変数じゃなくて静的変数を使うの?
274 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 11:56:59 ] グローバル変数との比較だと static変数はスコープがソースコード単位になるから 他のソースコードと名前が重複しても大丈夫
275 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 12:06:55 ] Cにはnamespaceがないから。
276 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 14:15:29 ] staticって意味が幾つも有ったような
277 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 19:21:16 ] C#言語で言う#regionみたいなことがしたいのですが 何かいい方法はありませんか? 現在は #define COM 1 #ifdef COM ~折りたたみたい部分~ #endif といった使い方をしていますがスマートではなく、何かいい方法がないか探しています
278 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 19:25:24 ] 釣りかギャグかはたまたガチか それが問題だ
279 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 19:28:52 ] 初心者すれに行くべきでしたね すいません移動します
280 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 20:00:34 ] 数レス前に書いてあるだろw
281 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 20:55:03 ] あれだ 灯台下暗し
282 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 01:42:20 ] かなり初歩的な質問なのですが継承で 基本クラスのメンバ関数から派生クラスのデータメンバを変更するには どういった操作がありますでしょうか? 基本クラスのメンバ関数に派生クラスのオブジェクトのアドレスを 渡してみたりしたのですがコンパイルエラーで上手くいきませんでした。 よろしくお願いします。
283 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 02:40:09 ] 普通に仮想関数でいいと思うが。
284 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 07:44:39 ] そんな基本クラスが派生クラスの中身を知っているような設計は投げ捨てるかどうしてもというならCRTPを使いなさい
285 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:11:03 ] >>283 >>284 参考になりました。ありがとう!
286 名前:デフォルトの名無しさん [2010/06/02(水) 17:13:54 ] 1. 構造体のポインタ*tがある 2. 構造体の中にint型のポインタhogeがある 3. mallocを使って*tのメモリを確保 3. mallocを使ってhogeにint型x個分のメモリを確保 4. fwriteで構造体をファイルに書き込みたいが、二項目はどうやって指定すればいい?
287 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:18:28 ] fwrite(t, sizeof *t, 1, fp); 構造体のサイズが増えるわけでもないし。
288 名前:デフォルトの名無しさん [2010/06/02(水) 17:27:25 ] >>287 上手くいかん typedef struct test_t { int a,b,c,d,e; int *p; } test_t; test_t *t; t = (test_t *)malloc(sizeof(test_t)); t->p = (int *)malloc(sizeof(int)*60); printf("%d",sizeof(*t)); で、24って出る
289 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:31:01 ] >>286 fwrite(t, sizeof(int), x, fp); だろ ただし、 >1. 構造体のポインタ*tがある でなく、 >1. 構造体のポインタtがある であるならということ。3.も同様。 もし原文通りなら fwrite(*t, sizeof(int), x, fp); となる
290 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:32:28 ] >>288 pに確保した領域のサイズは構造体とは別。
291 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:32:45 ] trivially copyable classに展開してまとめて読み書きすればいいよ
292 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:34:55 ] >>288 構造体には他のメンバもあるのか。 それなら fwrite を2回する必要があるだろ。 fwrite(t, sizeof(test_t), 1, fp); fwrite(t->p, sizeof(int), x, fp);
293 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:42:39 ] >>290 知ってる。だから質問した >>292 それが一番スマートかな 構造体からpをそもそも切り離しとくってのも一つの手か thx
294 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:47:00 ] 知ってたら>>288 で24が出ても上手くいかんなんて言わないだろw
295 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:55:29 ] fwriteしたものを、そのままfreadしようっていう魂胆なの?
296 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:59:17 ] 定数じゃないならxもどっかに保存しとかないと読み込むとき困る。
297 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:13:15 ] 読み込みは t = malloc(sizeof *t) → fread(t) → t-> = malloc(int*x) -> fread(t->p) で。
298 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:39:27 ] 型変換を伴うコピーの時の参照カウンタのコピーをどうやってるのかと疑問に思って shared_ptrの中身を覗いてみたらpublicメンバだった こんなものなの
299 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:49:20 ] >>298 public でないと参照できないじゃん
300 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:54:47 ] >>299 まあそうなんですが boostのことだからもっと複雑怪奇な方法で回避してる物かと思ったのでw
301 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 19:25:24 ] template friend classにしないのはなんで?
302 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:51:31 ] codepad.org/1ZyOAlyL 上は、はじめてのCという本に乗っていたコードを 少し書き換えたもの(printfをcoutに、など)です 結果が3→2→1→0→1→2→3と表示される内、 行きの3→2→1→0は分かるのですが、 帰りの0→1→2→3の部分がどうしてそうなるのか、さっぱり分かりません tline(int x)に渡す引数を増加させる処理はないように見えるのですが、 どなたか教えていただけないでしょうか
303 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:54:41 ] 再帰関数で0以外は一つの関数で2回表示してるから。
304 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:00:50 ] recfunc(3)を呼び出す 3を表示する recfunc(2)を呼び出す 2を表示する recfunc(1)を呼び出す 1を表示する recfunc(0)を呼び出す 0を表示する recfunc(0)から抜ける 1を表示する recfunc(1)を抜ける 2を表示する recfunc(2)を抜ける 3を表示する recfunc(3)を抜ける
305 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:05:54 ] >>303 冷静になってみると仰る通り2回表示してますね ifの中身だけ見て、その下を見てませんでした ありがとうございます >>304 詳しい説明ありがとうございます 小一時間も考え込んでた自分が恥ずかしいです 低レベルな質問にも関わらずお答えいただき、お二方に感謝します ありがとうございました
306 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:48:07 ] >>301 どうもコンパイラにより対応状況がまちまちらしい boostのコードをみてみたら狡賢いコードになってたw public: /* 〜省略〜 */ #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS private: template<class Y> friend class shared_ptr; template<class Y> friend class weak_ptr; #endif T * px; // contained pointer boost::detail::shared_count pn; // reference counter
307 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:51:08 ] ポインタp,qがあって参照剥がしして一致、あるいは、両方NULLならtrueにしたいときって↓でおけ? ((p && q) && (*p == *q)) || (p || q)
308 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:57:48 ] だめじゃね?
309 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 23:01:27 ] だめだな
310 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 23:06:08 ] どうして諦めるんだよ!
311 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 23:07:30 ] ((p&&q) && (*p==*q)) || (!(p || q))か?
312 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 23:20:33 ] 答え:(p && q && (*p == *q)) || !(p && q)
313 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 23:25:48 ] X
314 名前:デフォルトの名無しさん [2010/06/02(水) 23:29:56 ] !p && !q || p && q && (*p == *q)
315 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 23:58:39 ] 答え。 p-q
316 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 00:10:52 ] >>314 が俺好み
317 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 00:15:55 ] !p && !q と !(p || q) のどっちにするかは趣味の問題だな。
318 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 06:52:18 ] p == q || p && q && *p == *q
319 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:21:58 ] p == q || と || p == q のどっちにするかは趣味の問題だな。
320 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:27:53 ] p == q を先にチェックするほうがいいにきまってるだろ。
321 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:42:16 ] なんで?
322 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:48:52 ] p と q が 0 でない事を先にチェックした方が良い 0だと以降が実行されない p == q は p と q の両方が0でも真になってしまう
323 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:50:42 ] > p == q は p と q の両方が0でも真になってしまう それが >307 が求めていたものでしょ。
324 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:55:05 ] >>32 参照はがしをしなくてすむなら、しないほうがはやいでしょ? ポインタが同じところをさしているなら、ポインタの先を見るまでもない。
325 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 10:46:05 ] >>324 大人になれば分かる
326 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:09:17 ] >>324 ポインターの値が同じでも実体の値が違うことがある
327 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:16:50 ] 順序は実際のデータでプロファイリングして決めるのが一番
328 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:19:07 ] >>326 PODとは限らんからね >>324 はC++でプログラム組んだことがないんだと思う
329 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:29:17 ] >ポインターの値が同じでも実体の値が違うことがある そんなスマポは使いたくない。
330 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:30:37 ] >>328 普通のポインタじゃなくて、スマートポインタの話をしていたの?
331 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:31:47 ] p,qが生ポインタでp == qで*p != *qって例えばどういうケースよ?現実的な事例を教えてくれ
332 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:32:55 ] メモリマップトI/Oなんて、もちださないでくれよ。
333 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:33:10 ] ポインターの値が同じでも実体の値が違う ってどんな用途に使うスマートポインタなんでしょうか? 気になる
334 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:47:13 ] >>331 PODでなければ普通に起こるだろ。
335 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:49:35 ] >>331 それが保証されるのはCに限った話、C++は違うね
336 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:51:56 ] 保証されるとかじゃなくて、現実的な話として、そういう設計の有益なクラスを例示してくれって言ってるの
337 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:03:17 ] >>336 例えばベースクラスが共通(またはどちらかがベースクラス)で、 片方への cast operator が定義されている場合とか こういうコード普通に沢山存在してるだろ 有益かどうかはお前のさじ加減だし
338 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:19:45 ] p==qの時点でp,qの型は同じ 参照はがしても同じ型で比較されるだけだからキャストは関係ないだろ
339 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:21:59 ] >>337 あたまがわるいので、例が思いつかない。 具体例を教えてください。 class B { int x; }; class C { int y; }; class D : public B, C { int z; }; int main() { D* p = new D(); B* q = p; printf("p == q => %d\n", p == q); printf("*p == *q => %d\n", *p == *q); } D に、どんな演算子を定義すればいいんですか?
340 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:28:41 ] みなさんが当たり前のように言ってるC++なら違うっていうのは !=のおかしなオーバーロードのことでいいんでしょうか? なんだか!=が真になるのが普通にあることみたいにいわれてるようなので ひょっとしてこれではないのでしょうか? あと>>334 はPODって言ってますが組み込み型の間違いであっていますか? PODの構造体は比較演算子が使えないですよね?
341 名前:339 mailto:sage [2010/06/03(木) 12:29:06 ] operator == を再定義するのは反則だよねえ? #include <stdio.h> class B { int x; }; class D : public B { int y; }; bool operator==(const D&, const B&) { return false; } int main() { D* p = new D(); B* q = p; printf("p == q => %d\n", p == q); printf("*p == *q => %d\n", *p == *q); }
342 名前:339 mailto:sage [2010/06/03(木) 12:31:53 ] >ポインターの値が同じでも実体の値が違うことがある operator == を再定義したら、「実体の値が違う」ことにはならないか。
343 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:35:37 ] >>319 == >>329 >>318 はどちらにしろ間違ってるんで、いち抜けする。 if p == q はダメだろう。
344 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:41:23 ] >>343 >>318 のどこが間違っているって?
345 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:42:26 ] if p == q はダメだろう。
346 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:43:41 ] (1) p と q が別のオブジェクトを指していて (2) p == q で (3) *p と *q の実体が違う ということはありえないで、ファイナルアンサー?
347 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:45:24 ] p==qかつ*p!=*qなんて非常識なケースが普通に沢山あるようなコードを自信満々に書いちゃう>>337 は別業種への転職をおすすめする そうなるように書くことはできるが、副作用も含めてそうならないようにコードを書くのが当たり前の感覚
348 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:47:56 ] >>307 に答えだしたら p=123456; q=123456; if p == q はダメだろう。
349 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:49:49 ] >>348 どこがダメ?
350 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:51:27 ] >>348 無効なポインタを渡したときに、アクセス違反が発生しないからダメとかつまんないこといってんじゃないよね?
351 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:51:41 ] >>349 自分で適当なアドレス突っ込んだ場合、 「参照剥がしして〜」 の条件に合わなくなる(参照はがせない) って言ってるんだろ? アホかと思うがwwwww
352 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:53:34 ] 普通にやってて自分でアドレス突っ込んじゃうような子がいたら消費者に訴えられるレベル
353 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:58:58 ] >>338 これが違う p と q が同じ型だとはどこにも書いてないだろ
354 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:01:28 ] >>353 違う方じゃコンパイルエラーだろ
355 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:02:35 ] >>339 operator B(); というメソッド。