スレを勃てるまでもないC/C++の質問はここで 15
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/05/09(日) 10:31:46過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
http://pc11.2ch.net/test/read.cgi/tech/1221633708/
スレを勃てるまでもないC/C++の質問はここで 5
http://pc11.2ch.net/test/read.cgi/tech/1230516307/
スレを勃てるまでもないC/C++の質問はここで 6
http://pc11.2ch.net/test/read.cgi/tech/1231564903/
スレを勃てるまでもないC/C++の質問はここで 7
http://pc11.2ch.net/test/read.cgi/tech/1232983248/
スレを勃てるまでもないC/C++の質問はここで 8
http://pc12.2ch.net/test/read.cgi/tech/1235921779/
スレを勃てるまでもないC/C++の質問はここで 9
http://pc12.2ch.net/test/read.cgi/tech/1240022781/
スレを勃てるまでもないC/C++の質問はここで 10
http://pc12.2ch.net/test/read.cgi/tech/1242300936/
スレを勃てるまでもないC/C++の質問はここで 11
http://pc12.2ch.net/test/read.cgi/tech/1245059383/
スレを勃てるまでもないC/C++の質問はここで 12
http://pc12.2ch.net/test/read.cgi/tech/1248010352/
スレを勃てるまでもないC/C++の質問はここで 13
http://pc12.2ch.net/test/read.cgi/tech/1260842197/
スレを勃てるまでもないC/C++の質問はここで 14
http://pc12.2ch.net/test/read.cgi/tech/1269273471/
0232デフォルトの名無しさん
2010/05/28(金) 17:58:460233デフォルトの名無しさん
2010/05/28(金) 20:15:13しょうがないだろう。
0234デフォルトの名無しさん
2010/05/28(金) 20:28:000235233
2010/05/29(土) 01:02:34知らなかったから
「標準入力をファイルとしてオープンする」という質問になっちゃったんでしょう。
>>231結果的に欲しかったのはファイルハンドルだったから。
0236デフォルトの名無しさん
2010/05/29(土) 09:40:18どの程度のレベルまで仕様とか実装を練りこむ?
0237デフォルトの名無しさん
2010/05/29(土) 09:45:09理由が政治的かメモリサイズかによって違ってくるな。
0238デフォルトの名無しさん
2010/05/29(土) 09:47:14ただ、boostに不慣れな人がいてとりあえず今回はなしで、という感じ
0239デフォルトの名無しさん
2010/05/29(土) 09:56:48その判断は今回だけではすまないし後々後を引く。スマポは後から導入が面倒だから今後も見送りになりやすいぞ。
スマポ作るならboost::shared_ptrかstd::tr1::shared_ptrのインターフェース互換にして後にusingで切り替えられるようにすることを勧める。
0240デフォルトの名無しさん
2010/05/29(土) 09:58:050241デフォルトの名無しさん
2010/05/29(土) 10:08:37この場合の選定基準は理解が簡単でトレーニングの必要が少ないライブラリだけを許可することかな
shared_ptrやoptionalとか、その辺の解説サイトを流し読みすれば理解できるでしょ
0242デフォルトの名無しさん
2010/05/29(土) 10:12:230243デフォルトの名無しさん
2010/05/29(土) 10:13:400244デフォルトの名無しさん
2010/05/29(土) 17:16:50気が付かないうちに循環関係になっててメモリリークを引き起こしちゃって原因の判明に苦労したのだが
もうこれは気をつける以外に対応がないものなのか?
0245デフォルトの名無しさん
2010/05/29(土) 17:55:19デバッグ終了時にリークはレポートされるから、レポートされたときの版のコミットログ調べればすぐに特定できると思う。
循環参照が起きるパターンは限られてるんで、その場で対応すればいいと思うよ。
予想外の循環参照が起きるのは設計が悪いとしか言いようがない。たとえば参照の方向を一定にし、前方参照とshared_from_thisを使わない設計にすれば循環参照は自然に避けられる。
0246デフォルトの名無しさん
2010/05/30(日) 10:57:28printf関数が使えるんですけどどういうことですか?
単なる警告なだけでエラーにならないのが不思議です。
本にはインクルードせよみたいに書いてあるのに
じゃあ何のためにインクルードするの?って感じなんですが・・・。
0247デフォルトの名無しさん
2010/05/30(日) 11:04:15戻り値の型が int で、引数が (...) であるのと同じように解釈されて実行される。
だから、math.h をインクルードせずに sin(1) とかやると
変になる(int sin(int) であると解釈して実行されるので)など、
ちゃんとインクルードしないと意図しない動作を引き起こす恐れがあるので、
必ずインクルードすること。
(数学関数を特別視してちゃんとdoubleにしてくれるコンパイラもあるけど、
それはそのコンパイラ独自の仕様)
C++なら文法エラー。
0248デフォルトの名無しさん
2010/05/30(日) 11:34:35これってコンテナのoperator[]の引数もintあるいはintN_tにしろってこと?
あとintは少なくとも32bitあると考えても良いって書いてあるけどそんな保証はないよね?
0249デフォルトの名無しさん
2010/05/30(日) 11:58:150250デフォルトの名無しさん
2010/05/30(日) 12:22:040251デフォルトの名無しさん
2010/05/30(日) 12:29:440252デフォルトの名無しさん
2010/05/30(日) 16:10:26100.123001となってしまうのは何故ですか?
0253デフォルトの名無しさん
2010/05/30(日) 16:11:280254デフォルトの名無しさん
2010/05/31(月) 03:48:08例外でデバッグが止まると時々,終了できなくなります.
デバッグ→すべて中止でも止まらない,タスクマネージャのプロセスにも表示されない...
プロセスIDを調べてPskillで指定しても終了できません.
コンソールwindowは残ったままなんですが….おかげでwindowsごとリセットしていますが,
何か止める方法orこうならないための対策ありますか.
0255デフォルトの名無しさん
2010/05/31(月) 08:07:33Windows自体再起動も終了も出来なくなるし、放置すると全体がフリーズしてすごく困る。
0256デフォルトの名無しさん
2010/05/31(月) 12:29:22>>255
CTFMONってプロセスがあったらキルしてからデバッグして味噌
0257デフォルトの名無しさん
2010/05/31(月) 14:14:42The 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が指すものが前文に無いようにおもえて翻訳できません。
詳しく教えてください。
0258デフォルトの名無しさん
2010/05/31(月) 14:28:020259デフォルトの名無しさん
2010/05/31(月) 14:34:52翻訳してください。
0260デフォルトの名無しさん
2010/05/31(月) 15:17:530261デフォルトの名無しさん
2010/05/31(月) 15:19:39ありがと。今度なったら試してみる。
0262デフォルトの名無しさん
2010/05/31(月) 15:22:350263デフォルトの名無しさん
2010/05/31(月) 15:23:180264デフォルトの名無しさん
2010/05/31(月) 15:24:180265デフォルトの名無しさん
2010/05/31(月) 15:25:100266デフォルトの名無しさん
2010/05/31(月) 15:26:360267デフォルトの名無しさん
2010/05/31(月) 15:30:550268デフォルトの名無しさん
2010/05/31(月) 15:34:23存在することがが明らかになる
0269デフォルトの名無しさん
2010/05/31(月) 15:37:29ここでの問題は、追加テンプレートAccTの導入からもわかるように、
我々のテンプレートが文字型についてインスタンス化されてることです。
0270デフォルトの名無しさん
2010/05/31(月) 15:40:130271デフォルトの名無しさん
2010/05/31(月) 17:22:57#pragma ○○
・・・
#pragma end○○
と書けば横の+、−でコードを格納できたと思いますが、
忘れてしまったので教えてもらえませんか?
0272デフォルトの名無しさん
2010/05/31(月) 17:58:120273デフォルトの名無しさん
2010/06/01(火) 10:42:150274デフォルトの名無しさん
2010/06/01(火) 11:56:59static変数はスコープがソースコード単位になるから
他のソースコードと名前が重複しても大丈夫
0275デフォルトの名無しさん
2010/06/01(火) 12:06:550276デフォルトの名無しさん
2010/06/01(火) 14:15:290277デフォルトの名無しさん
2010/06/01(火) 19:21:16何かいい方法はありませんか?
現在は
#define COM 1
#ifdef COM
~折りたたみたい部分~
#endif
といった使い方をしていますがスマートではなく、何かいい方法がないか探しています
0278デフォルトの名無しさん
2010/06/01(火) 19:25:24それが問題だ
0279デフォルトの名無しさん
2010/06/01(火) 19:28:52すいません移動します
0280デフォルトの名無しさん
2010/06/01(火) 20:00:340281デフォルトの名無しさん
2010/06/01(火) 20:55:03灯台下暗し
0282デフォルトの名無しさん
2010/06/02(水) 01:42:20基本クラスのメンバ関数から派生クラスのデータメンバを変更するには
どういった操作がありますでしょうか?
基本クラスのメンバ関数に派生クラスのオブジェクトのアドレスを
渡してみたりしたのですがコンパイルエラーで上手くいきませんでした。
よろしくお願いします。
0283デフォルトの名無しさん
2010/06/02(水) 02:40:090284デフォルトの名無しさん
2010/06/02(水) 07:44:390285デフォルトの名無しさん
2010/06/02(水) 17:11:03参考になりました。ありがとう!
0286デフォルトの名無しさん
2010/06/02(水) 17:13:542. 構造体の中にint型のポインタhogeがある
3. mallocを使って*tのメモリを確保
3. mallocを使ってhogeにint型x個分のメモリを確保
4. fwriteで構造体をファイルに書き込みたいが、二項目はどうやって指定すればいい?
0287デフォルトの名無しさん
2010/06/02(水) 17:18:28構造体のサイズが増えるわけでもないし。
0288デフォルトの名無しさん
2010/06/02(水) 17:27:25上手くいかん
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って出る
0289デフォルトの名無しさん
2010/06/02(水) 17:31:01fwrite(t, sizeof(int), x, fp);
だろ
ただし、
>1. 構造体のポインタ*tがある
でなく、
>1. 構造体のポインタtがある
であるならということ。3.も同様。
もし原文通りなら
fwrite(*t, sizeof(int), x, fp);
となる
0290デフォルトの名無しさん
2010/06/02(水) 17:32:28pに確保した領域のサイズは構造体とは別。
0291デフォルトの名無しさん
2010/06/02(水) 17:32:450292デフォルトの名無しさん
2010/06/02(水) 17:34:55構造体には他のメンバもあるのか。
それなら fwrite を2回する必要があるだろ。
fwrite(t, sizeof(test_t), 1, fp);
fwrite(t->p, sizeof(int), x, fp);
0293デフォルトの名無しさん
2010/06/02(水) 17:42:39知ってる。だから質問した
>>292
それが一番スマートかな
構造体からpをそもそも切り離しとくってのも一つの手か
thx
0294デフォルトの名無しさん
2010/06/02(水) 17:47:000295デフォルトの名無しさん
2010/06/02(水) 17:55:290296デフォルトの名無しさん
2010/06/02(水) 17:59:170297デフォルトの名無しさん
2010/06/02(水) 18:13:150298デフォルトの名無しさん
2010/06/02(水) 18:39:27shared_ptrの中身を覗いてみたらpublicメンバだった
こんなものなの
0299デフォルトの名無しさん
2010/06/02(水) 18:49:20public でないと参照できないじゃん
0300デフォルトの名無しさん
2010/06/02(水) 18:54:47まあそうなんですが
boostのことだからもっと複雑怪奇な方法で回避してる物かと思ったのでw
0301デフォルトの名無しさん
2010/06/02(水) 19:25:240302デフォルトの名無しさん
2010/06/02(水) 21:51:31上は、はじめてのCという本に乗っていたコードを
少し書き換えたもの(printfをcoutに、など)です
結果が3→2→1→0→1→2→3と表示される内、
行きの3→2→1→0は分かるのですが、
帰りの0→1→2→3の部分がどうしてそうなるのか、さっぱり分かりません
tline(int x)に渡す引数を増加させる処理はないように見えるのですが、
どなたか教えていただけないでしょうか
0303デフォルトの名無しさん
2010/06/02(水) 21:54:410304デフォルトの名無しさん
2010/06/02(水) 22:00:503を表示する
recfunc(2)を呼び出す
2を表示する
recfunc(1)を呼び出す
1を表示する
recfunc(0)を呼び出す
0を表示する
recfunc(0)から抜ける
1を表示する
recfunc(1)を抜ける
2を表示する
recfunc(2)を抜ける
3を表示する
recfunc(3)を抜ける
0305デフォルトの名無しさん
2010/06/02(水) 22:05:54冷静になってみると仰る通り2回表示してますね
ifの中身だけ見て、その下を見てませんでした
ありがとうございます
>>304
詳しい説明ありがとうございます
小一時間も考え込んでた自分が恥ずかしいです
低レベルな質問にも関わらずお答えいただき、お二方に感謝します
ありがとうございました
0306デフォルトの名無しさん
2010/06/02(水) 22:48:07どうもコンパイラにより対応状況がまちまちらしい
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
0307デフォルトの名無しさん
2010/06/02(水) 22:51:08((p && q) && (*p == *q)) || (p || q)
0308デフォルトの名無しさん
2010/06/02(水) 22:57:480309デフォルトの名無しさん
2010/06/02(水) 23:01:270310デフォルトの名無しさん
2010/06/02(水) 23:06:080311デフォルトの名無しさん
2010/06/02(水) 23:07:300312デフォルトの名無しさん
2010/06/02(水) 23:20:330313デフォルトの名無しさん
2010/06/02(水) 23:25:480314デフォルトの名無しさん
2010/06/02(水) 23:29:560315デフォルトの名無しさん
2010/06/02(水) 23:58:39p-q
0316デフォルトの名無しさん
2010/06/03(木) 00:10:520317デフォルトの名無しさん
2010/06/03(木) 00:15:550318デフォルトの名無しさん
2010/06/03(木) 06:52:180319デフォルトの名無しさん
2010/06/03(木) 09:21:580320デフォルトの名無しさん
2010/06/03(木) 09:27:530321デフォルトの名無しさん
2010/06/03(木) 09:42:160322デフォルトの名無しさん
2010/06/03(木) 09:48:520だと以降が実行されない
p == q は p と q の両方が0でも真になってしまう
0323デフォルトの名無しさん
2010/06/03(木) 09:50:42それが >307 が求めていたものでしょ。
0324デフォルトの名無しさん
2010/06/03(木) 09:55:05ポインタが同じところをさしているなら、ポインタの先を見るまでもない。
0325デフォルトの名無しさん
2010/06/03(木) 10:46:05大人になれば分かる
0326デフォルトの名無しさん
2010/06/03(木) 11:09:17ポインターの値が同じでも実体の値が違うことがある
0327デフォルトの名無しさん
2010/06/03(木) 11:16:500328デフォルトの名無しさん
2010/06/03(木) 11:19:07PODとは限らんからね
>>324 はC++でプログラム組んだことがないんだと思う
0329デフォルトの名無しさん
2010/06/03(木) 11:29:17そんなスマポは使いたくない。
0330デフォルトの名無しさん
2010/06/03(木) 11:30:37普通のポインタじゃなくて、スマートポインタの話をしていたの?
0331デフォルトの名無しさん
2010/06/03(木) 11:31:47■ このスレッドは過去ログ倉庫に格納されています