- 1 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:18:41 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.47【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1200464091/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 518 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:42:07 ]
- >>517
どうでもいいが、>514は>512宛てだ。 ついでに言えば、ポインタ渡しじゃなくて参照渡しにするだろ。常考
- 519 名前:デフォルトの名無しさん [2008/02/12(火) 18:49:20 ]
- >>518
勘違いしました、、 なぜデバッグだと動いていたのか、と 値渡しだとだめなのかを知りたいのですが。。
- 520 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:54:58 ]
- >>519
>515
- 521 名前:デフォルトの名無しさん [2008/02/12(火) 19:06:43 ]
- >>520
というか良く見たらDebugモードになってまして、 Releaseだとやっぱりオーバーランしてましたorz だめだめだ。。。 class A{ string m_str; public: func(string str){ m_str=str; ← }; }; class X{ public: func(string str){ A hoge; hoge.func(str) }; }; DWORD WINAPI doloop(LPVOID lpParam){ x.func("test"); ←xはグローバル変数になってます }; 最初はこんな感じです。。
- 522 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:11:48 ]
- >>513
mainもないのが、問題なく動くのか……最近のC++は凄いな
- 523 名前:513 mailto:sage [2008/02/12(火) 19:13:15 ]
- >>520
Releaseでビルドプロパティの最適化を無効にしたらReleaseでも大丈夫でした。
- 524 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:14:50 ]
- >>521
問題が再現する最小のテストコードを作って 検証してから質問してくれ
- 525 名前:513 mailto:sage [2008/02/12(火) 19:15:45 ]
- >>522
mainからdoloopをスレッドで動かしてます。。 簡略化しすぎました。。 DWORD WINAPI doloop(LPVOID lpParam){ while(!bMainLoopExit) { EnterCriticalSection(&cs); x.func("test"); LeaveCriticalSection(&cs); } ExitThread(NULL); }
- 526 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:16:01 ]
- class A{
std::string m_name; public: void func(std::string str){ m_name = str; } } int main(int, char**) { A test; std::string str = "abc"; test.func(str); } // これでも落ちるか?
- 527 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:16:44 ]
- >>525
まて、複数のスレッドからグローバル変数にアクセスしてるのか?
- 528 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:18:51 ]
- このあと、衝撃の新事実が!
- 529 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:21:42 ]
- D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(d3dpp)); D3DPRESENT_PARAMETERS d3dpp = {0}; 結果に違いはありますか?
- 530 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:23:24 ]
- STL使っておいてExitThreadってのも相当ヤバイ匂いがするけどな
- 531 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:27:49 ]
- そもそも〜Thread系の関数って使いどころあるのかね?
- 532 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:27:50 ]
- うむ、少なくともA::funcが問題って訳じゃなさそうだよね。
ってか、なんで値渡し……?
- 533 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:36:24 ]
- 構造体のメンバに、名前と番号両方からアクセスしたいとおもっています。
typedef struct particle{ double data[3][3]; typedef data[][0] position[]; typedef data[][1] verosity[]; typedef data[][2] angle[]; /* ようするに、data[][]に、position[]……という名前でもアクセスしたい */ /* data[][]のままで、loopを回して全部に値を流し込む、ということもしたいので、二重配列も残したい*/ }PARTICLE; 当然のようにエラーなのですが、こういうばあいどのように記述すればいいのでしょうか。
- 534 名前:513 mailto:sage [2008/02/12(火) 19:38:00 ]
- >>526
mainの中身を >>521のX::funcにあたる場所に入れて実行してみましたがだめみたいです。 >>527 そうです。。 >>530 書かなくてもいいけど明示的に書いても良いって書いてあったので書いてあります。 クリティカルセクションで排他処理した気分になって 親が実体持ってるクラスを使ってます。。
- 535 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:44:25 ]
- 2chcity.myminicity.com/env
環境優先的に修復を。たぶんこの項目が一番減る。 NEJITUのように少し公園を先行させてもいいかもしれん。 ランク 国名 .... 街名 人口 (増減) 前日 --- 1 US1 .LUELand 314897 (. +528) 314369 --- 2 US2 .GoonTown ......187254 (. +490) 186764 --- 3 US3 .CreateMyCity Forum 105044 (. +804) 104240 --- 4 Slovenia1 Staregate 100076 (+1393) .98683 --- 5 Poland1 #debian.pl .... .90733 (. +618) .90115 --- 6 Germany1 isnichwahr.de .89782 (. +224) .89558 --- 7 Japan1 ...2ch_city .... .69147 (+1870) .67277 --- 8 Germany2 deluxebits .59250 (. +279) .58971 --- 9 France1 .FanaZ . .56613 (+1377) .55236 --- 10 . Germany3 upOTia . .54802 (. +130) .54672 20位までのランクは下記URLご参照ください mmc.from.tv/world.html
- 536 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:49:09 ]
- 宣伝するのはいいけど、糞重いページだと注意書きしろよ。
- 537 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:53:41 ]
- >>533
typedef union particle{ double data[3][3]; struct { double position[3]; double verosity[3]; double angle[3]; } named; }PARTICLE;
- 538 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:59:41 ]
- 例外を投げるときどういう型で投げるのが一般的なんでしょうか?
エラーメッセージ? エラーコード? それともクラスで投げて型判別? どういう形がスマートでしょうか
- 539 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:03:05 ]
- CAtlException
- 540 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:20:13 ]
- >537
ありがとうございます // strtest.c #include <stdio.h> typedef union particle{ double data[3][3]; struct { double position[3]; double verosity[3]; double angle[3]; } named; }PARTICLE; int main(void){ PARTICLE pt; pt.data[0][0] = 10; printf("%lf\n",pt.named.position[0]); return 0; } >gcc strtest.c >./a.out 10.00000 所望の動作が得られました。
- 541 名前:513 mailto:sage [2008/02/12(火) 20:42:48 ]
- 答えてくださった方々ありがとうございました。
- 542 名前:460 mailto:sage [2008/02/12(火) 21:10:50 ]
- >>471
! なるほど。そこの部分と、>>460では省略した速度のvをintからfloatにしたらなんとなくうまくいきそうな感じになってきました。 ありがとうございます。
- 543 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:18:08 ]
- Cの基本的なこと(繰り返しや条件分岐、演算子、ポインタ、構造体)をやってからC++(visual C++)をやろうと思ってるんですが他にCで勉強してた方がいいことってありますか?
- 544 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:35:53 ]
- STLとATLで、
std::stack<CAutoPtr<Hoge>> hoges; hoges.push(CAutoPtr(new Hoge())); hoges.top()->func(); とすると、Hogeの実体がすでに破棄されているみたいでエラーが出ます。 std::stack<CAutoPtr<Hoge>> hoges; hoges.push(CAutoPtr(new Hoge())); hoge.top().Attach(new Hoge()); hoges.top()->func(); とすれば動きます。 どうして上のだと捨てられているですか?
- 545 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:52:39 ]
- すまぽい
- 546 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:54:00 ]
- CAutoPtrってSTLのコンテナに突っ込んで平気だったっけ。実装的に。
- 547 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:03:06 ]
- auto_ptrと一緒じゃないか?
hoge.top().Attach(new Hoge()); で新たなアドレス突っ込んでるから動くだけで。
- 548 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:13:30 ]
- >>529
D3DPRESENT_PARAMETERSがPOD型なら無い
- 549 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:13:52 ]
- CAutoPtrが原因だね。
- 550 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:14:39 ]
- CAutoPtr専用のコンテナがあったはず
- 551 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:16:31 ]
- >>548
そいつたぶん釣りか荒らしかただのバカだよ…。
- 552 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:16:54 ]
- それかCSharedPtr
- 553 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:24:25 ]
- >>534
スレッド中でWindowsAPIのみ使うならCreateThread, ExitThreadでいいよ。 でもCランタイム使うなら_beginthread, _endthread使わないとダメだぜ。 あと、ExitThread等でスレッド終わらせると、スコープ抜けずにスレッドが終わる。 C++使うなら、ローカル変数のデストラクタ呼ばれなくなるからやめた方がいい。
- 554 名前:460 mailto:sage [2008/02/12(火) 22:48:42 ]
- すみません、やっぱり無理でした。
( after - before )の部分をtimeに置き換える。 ・・・・ 正常に動作。 (ただし、事前に float time = 0.1; を宣言しておく。) ( after - before )の部分を数字の0.1に置き換える。 ・・・・ 正常に動作。 ( after - before )の部分をtimeに置き換える。 ・・・・ おかしい (ただし、事前に DWORD time = 0.1; を宣言しておく。) ここから考えるにDWORD型が悪さをしていると思うんですが、 ( after - before )の部分を( float )( after - before )に置き換える。 ・・・・ おかしい 何か特殊な変換をしなければいけないんでしょうか?
- 555 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:52:40 ]
- >DWORD time = 0.1;
DWORDが何のtypedefか分かってる?
- 556 名前:デフォルトの名無しさん [2008/02/12(火) 23:19:54 ]
- すみません質問です。
下記のようなコードでBar::fugaを初期化する方法が よくわからないのですが、教えていただけませんでしょうか? この場合はやはり引数空っぽのコンストラクタを作るほかに手はないのでしょうか? class Foo{ public: Foo( int hoge ){ ... } }; class Bar{ public: Foo fuga[ 3 ]; Bar( void ) : ???? { ... } };
- 557 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:22:46 ]
- >>554
おかしいというときは、after - beforeやtimeの値が0になっているときじゃないか?
- 558 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:34:52 ]
- timeGetTimeが何を返す関数なのか理解しないで使っているに1ガバス。
- 559 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:42:03 ]
- 戻り値で
return *(hoge + (sizeof(piyo) + 2); みたいに書くのって非推奨なんでしょうか?*は無くてもいいんだけれども
- 560 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:52:53 ]
- ケースバイケース。
つか、それだけじゃ分からん。
- 561 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:55:35 ]
- >>559
まあ、非推奨だろうね。 コンパイルできないし。
- 562 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:57:36 ]
- >>559
*があるとないじゃ内容が変わるが?括弧の数が合わないのはtypoでいいよね? 個人的には、あんま複雑になるようならローカルに落として欲しいけど、これくらいなら許容範囲。 ってか、ポインタを+2するだけならreturn hoge + 2;でもいいんでねぇの?
- 563 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:58:57 ]
- >>559
何がいいたいのかさっぱり分からない。
- 564 名前:460 mailto:sage [2008/02/13(水) 00:45:52 ]
- うあああああああああ!できました!
>>555 整数型って分かってたつもりなのに小数いれてました! あと、>>557で言われたとおりにtimeの値調べてたら、 ウィンドウ生成時に before = timeGetTime(); そして計算時にも before = timeGetTime(); ってやって、afterに何も入ってないような状態になってたような感じでした! 今度こそ解決しました!ありがとうございます!
- 565 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:53:15 ]
- そもそもさ、めちゃめちゃな計算結果って具体的にどんなんよ
- 566 名前:460 mailto:sage [2008/02/13(水) 01:11:10 ]
- 3Dのモデルを動かしてて、チェックするまでは数字の表示の仕方がよく分からなくて数字に出してなかったんですが、
とりあえず物体のy座標しかいじってないのにカメラの位置が変わってました。
- 567 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:53:03 ]
- 一時的でなくそこからずっと指定の型で宣言したみたいに扱う方法ってないですか?
例えばchar型で宣言したのを一々(int)とかしなくてもずっとint型として扱う みたいな感じで
- 568 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:02:10 ]
- >>567
言いたいことがわからない。キャストを毎回するのが面倒ってことか? ずっとintならはじめからintにしとけばいいんでねぇの?
- 569 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:08:09 ]
- >>567
union{ char a; int b; }; ちょっと違うかもしれんが
- 570 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:08:59 ]
- >567
#define char int なにが起きても責任とらないよ。
- 571 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:26:22 ]
- >>568-470
ごめん_beginthreadが引数としてvoid*しか渡せないからそれをchar*として扱える ようにしたかったんです 関数内でchar *xxx=(char *)xxxとすることで解決しました。ご迷惑おかけしました
- 572 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:27:27 ]
- >>568-470
ごめん_beginthreadが引数としてvoid*しか渡せないからそれをchar*として扱える ようにしたかったんです 関数内でchar *xxx=(char *)xxxとすることで解決しました。ご迷惑おかけしました
- 573 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:28:44 ]
- 「charとint」と「void*とchar*」はだいぶ事情が違うだろ・・・
- 574 名前:デフォルトの名無しさん [2008/02/13(水) 06:39:24 ]
- >>514
>>516 ありがとうございます。なるほど、仮想関数は定義が必須なのですね。 あと、純粋仮想関数は定義が必要ないけど、デストラクタの純粋仮想関数の場合は やはり定義が必要になる、というのは正しいですか?
- 575 名前:デフォルトの名無しさん [2008/02/13(水) 08:56:43 ]
- 質問です。
マルチスレッドプログラムを作った事がないためわからないです。 スレッドAで作ったデータをスレッドBに渡すには普通どうやって渡すのでしょうか?以前お遊びで作った時、グローバル変数を使って渡したのですがデータが化けちゃったんですね。。 【作りたいもの】 ダイアログベースのターミナルソフト。 ・シリアルデータ受信スレッドでデータを受けて表示用(windowsのメッセージループ待ちをしてる)に送りたい 【開発環境】 VC。MFCはつかいません。猫でもわかるレベル
- 576 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:45:29 ]
- AはBの作成者、じゃないのね?
グローバルデータが化けた理由がわかれば解決すると思うよ。
- 577 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:49:28 ]
- 同時に書き込んだんじゃね?
もしくは書き込んでない(初期化してない)のに取得したか
- 578 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:58:22 ]
- どうせ排他してないだけなんだろうな
- 579 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 10:00:48 ]
- >>575
多分GUIスレッドにはPostMessage()でブン投げてるんだろうが、 GUIスレッドがPostされたメッセージをメッセージキューから読み取るまでの間に 受信スレッド側からの再Postが発生し得るから、その場合グローバル変数では 当然上書きされてしまうだろ。 Post側は毎回malloc()等でメッセージ用の領域を確保して、受け側で メッセージを処理したらfree()するように汁。
- 580 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 10:57:14 ]
- C++の一時オブジェクトについて質問します。gcc 3.2.1です。
下記のようなコードで"taking address of temporary"のWARNINGが出ますが、 この場合は無視しちゃってもいいですか?いいですよね? #include <stdio.h> class CTmp { public: int x,y; CTmp(int a,int b):x(a),y(b){}; }; int Foo(CTmp* pTmp) { if(pTmp) return pTmp->x + pTmp->y; return 0; } int main(int argc,char** argv) { int result=Foo(&CTmp(1,2)); printf("%d\n",result); return 0; }
- 581 名前:580 mailto:sage [2008/02/13(水) 11:16:23 ]
- こうするのがスマートかな。
スマートさ以外で>>580のまずい点あったら教えてください。 #include <stdio.h> class CTmp { public: int x,y; CTmp(int a,int b):x(a),y(b){}; }; int Foo(const CTmp &Tmp) { return Tmp.x + Tmp.y; } int main(int argc,char** argv) { int result=Foo(CTmp(1,2)); printf("%d\n",result); return 0; }
- 582 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:58:15 ]
- スマートというかそれが普通じゃね。
- 583 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:01:25 ]
- >>580
標準 C++ ではエラーになるはず。 gcc のバグっぽいな。 gcc.gnu.org/bugzilla/show_bug.cgi?id=21386 (だいぶ古いけど CONFIRM されてない。)
- 584 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:02:19 ]
- んじゃ、列挙。
・ポインタである必要が内のにポインタを使うな ・どうしても使いたいならconst修飾しろ ・そもそもデータメンバは公開するな ・クラスに依存する関数ならメンバにしろ
- 585 名前:デフォルトの名無しさん [2008/02/13(水) 12:15:31 ]
- 下記のように、fstreamの参照に、ifstreamを渡したいのですが、できません。
そこで、fstream *fsというようにポインタにしてやってるのですが、参照で やる方法はないでしょうか void func(fstream &fs) { return; } int main() { ifstream ifs; ifs.open("ttt"); func(ifs);
- 586 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:19:49 ]
- return文で計算したりって避けてたけど結構普通にやるもんなんだな
- 587 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:20:57 ]
- >>585
fstream は読み書き両用。読み取り専用の ifstream を渡せないのはあたりまえ。 なんで ifstream& にしないの?
- 588 名前:580 mailto:sage [2008/02/13(水) 12:26:17 ]
- >>582-583
レスありがとうございます。 まあ動くけど将来にわたって安全とは言い難い、 ってかやはり>>581推奨ってとこですかね。 >>584 あくまでサンプルなんで御容赦ください。 でもお気遣い感謝します。
- 589 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:46:25 ]
- まずい点あったら教えてくれと書いてるのに
まずい点を指摘したら言い訳ってどーなんだ
- 590 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:46:29 ]
- >>585
ファイルストリームのクラス階層を確認してみるべき。 fstreamとifstreamは継承階層の中で関係が全く無い。
- 591 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:53:03 ]
- >>589
いや、質問の主眼が"taking address of temporary"のWARNINGでしたので。 その他は瑣末なことと手を抜いてしまいました。 とりあえずお詫びまで。
- 592 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:56:48 ]
- まあありゃ誰がどう見てもただの揚げ足取りだな
- 593 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:03:19 ]
- >>585
ちょっとややこしいけど、そのコードには、一般によくある勘違いにかすっている 君独自の勘違いがある。 まず、ifstreamはistreamを継承してる。fstreamは、iostreamを継承してる。 そのiostreamが、istreamとostreamを継承してるから、つまり両者に共通する近い祖先はistream。 iostreamはistreamの子だけど、fstreamはifstreamの子ではない。これが一般に良くある勘違い。 で、君はこれを踏まえて、fstreamにifstreamを渡すという、更なる勘違いをしてる。 読み書き両用クラス「が」読み取り専用クラス「の」子であるのは明白なわけで、つまり君は、 このセンスがまだ身についていないか、あるいは、普通に渡すだけでダウンキャストが可能になるという、 C++の仕様に対する勘違いをしていることになる。
- 594 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:19:14 ]
- std::cinをstd::ifstreamに渡しても問題なかですか?
- 595 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:36:47 ]
- std::istreamじゃイヤなのか? なぜ f が必要?
- 596 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:47:04 ]
- >>593
そんなくどい説明必要ない。 クラス階層見れば一発で分かる。 他人の勘違いまでも決め付けるなんて教えたがりも甚だしい。
- 597 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:10:16 ]
- >>596
現実に「クラス階層見てない」人なんだし、 他に可能性が無い状況は決めつけとは言わないよ。 変な理屈で変なスイッチ入っちゃった人に絡まれるのってやだなぁ。
- 598 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:23:56 ]
- using namespace std;
は何かヘッダをincludeした後じゃないとだめなの?
- 599 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:28:19 ]
- 書くだけならお好きにどうぞ
- 600 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:39:47 ]
- VCで先に書くとstdと認識してくれないのですが
- 601 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:41:55 ]
- makeファイルがLinux、Windows、Macを識別する方法を教えてください
- 602 名前:デフォルトの名無しさん [2008/02/13(水) 15:46:10 ]
- >>600
これを機会にusing namespace std;をグローバルに置くのを やめちまいなよ
- 603 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:50:50 ]
- どこに置くのが正解なのでしょうか?
mainの中?
- 604 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:58:42 ]
- グローバルに置くのが正解
- 605 名前:602 [2008/02/13(水) 16:00:48 ]
- >>603
いや、mainの中の先頭に置いても良いけど スコープはmain内だけであってまぁ・・なんていうか・・・ using namespace std;の宣言自体を俺は勧めない
- 606 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:11:52 ]
- >>603
原則 using を使わず全部書くのが推奨だな
- 607 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:18:05 ]
- std::vector<int> hoge;
面倒でもこういう記法に慣れるが吉。
- 608 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:25:19 ]
- cout cin endlくらいはusing宣言したいな
- 609 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:39:53 ]
- (swap内で)
using std::swap; using boost::swap; using 俺ライブラリ::swap; (definition内で) using namespace boost::spirit; これしか使ってないな
- 610 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:44:03 ]
- >>608
おれもそう思う。stdにいろいろ詰め込み過ぎだ。
- 611 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:55:48 ]
- ::boost::mplを使うときに
専用の名前空間に放り込んでusing namespace ::boost::mpl;してから 共通名前空間にエイリアスとなるメタ関数を書くようにする ぐらいは許してください
- 612 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 18:52:47 ]
- 専用名前空間って、それのためにしか使わないなら、
名前空間のエイリアスnamespace hoge = boost::mpl;で十分では? それに限らず、cppファイル内ではよくやるんだが。 namespace bll = boost::lambda; namespace algo = boost::algorithm; namespace dr = System::Drawing;
- 613 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:36:33 ]
- VC++のusing namespaceは壊れてるから
専用の名前空間でも使わない方がいいよ
- 614 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:52:15 ]
- std::mapから登録していないKeyつかって[]で取り出そうとすると
出来立てのValueが返ってきますか?
- 615 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:55:30 ]
- うん
- 616 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 03:32:31 ]
- _beginthreadでマルチスレッドで実行する関数って戻り値設定できないの?
- 617 名前:デフォルトの名無しさん [2008/02/14(木) 03:53:29 ]
- くずたれの質問ですいません
class内でのstaticメソドはどういう役割をするんでしょうか csharpやjavaだとわかるんですが C++でのstaticメソッドは、いまいち解りません どなたか解説お願いしていただけないでしょうか
- 618 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 03:58:05 ]
- >>616
_endthreadex()を使えば整数は返せる。
|

|