- 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
- 75 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:44:29 ]
- >>73
inline指定してるのと同じになる。 実際にinline化されてるかはコンパイラ次第。
- 76 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:48:07 ]
- ありがとう。何か勘違いしてたみたい
deleteした後nullになるわけじゃないのね WM_DESTROYが来た時点ではOSかが自動的にdeleteしちゃってるから多重解放 でエラーでかうのかな
- 77 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:42:46 ]
- OSは自動的にdeleteなんてしません
- 78 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:47:50 ]
- libhoge.so
をスタティックリンクすることってできるんでしょうか?
- 79 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:54:20 ]
- はい。それがスタティックリンクできるようなアーカイブやオブジェクトモジュールであれば。
- 80 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 03:40:14 ]
- >>77
じゃあ何でエラーでるの? newしたまま終了してしまっても最悪OSがエラー処理として解放してくれるって聞いたけど
- 81 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 05:19:50 ]
- >>80
エラーが出る事と自動的にdeleteする事を同列に考えるなよ そもそもソース出してないのに的確な答えが出せると思える? つーか自分で考えて答え出すか出たんなら帰れよ、必要最低限のレスは付いたんだから
- 82 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 05:55:50 ]
- 的確な答じゃないなら断言口調で書くなよ、紛らわしい。
- 83 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 06:04:00 ]
- >>81
その考えをおまえが否定したから聞いてきてるんだろ
- 84 名前:デフォルトの名無しさん [2008/02/07(木) 06:42:38 ]
- vector って大きさが可変のはずですが、vectorの配列のポインタ操作ってうまくいくのでしょうか?
たとえば以下のように double の vector の配列を作ったとします。 std::vector<double> a[3][4]; この vector 配列の要素ごとに違う回数だけ push_back() で値を入れたとします。 そして vector のポインターを引数にとる以下の関数があり void hogehoge (std::vector<double>* arg ){ for(std::vector<double>::const_iterator it=arg[0].begin(); it!=arg[0].end(); it++){ std::cout<<"arg[1] " } } その引数に a[1] を以下のように入れた場合は hogehoge(a[1]); arg[0]というのは a[1][0] をちゃんとさしてくれるのでしょうか?
- 85 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 06:44:38 ]
- 否定したんじゃなくて、ありがちなパターンに陥っていそうだから指摘しただけだろ。
- 86 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:16:58 ]
- >>84
当然さす
- 87 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:18:13 ]
- >>80
newしたまま終了って、main/WinMain すら終了した後の話だぜ
- 88 名前:84 [2008/02/07(木) 07:20:43 ]
- >>86
ありがとう! ってことは sizeof(vector<double> は要素の数にかかわらず値は変わらないって事か。 不思議。
- 89 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:23:40 ]
- >>88
意味が分からん。 ポインタに [0] をつけたら そのアドレスにあるオブジェクトを指す。 極めてシンプルな答え。
- 90 名前:84 [2008/02/07(木) 07:30:44 ]
- メモリを動的に作ってるからコンテナの要素が増えてもポインタは同じ所にあるって事か
- 91 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:31:39 ]
- vectorの中身はnewで確保したメモリへのポインタ(と管理情報)だからな
- 92 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:35:21 ]
- >>88
要素自体は動的確保されているからな
- 93 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:35:52 ]
- いいえ。
- 94 名前:デフォルトの名無しさん [2008/02/07(木) 09:42:52 ]
- vectorの中の要素をソートしたいのですが、そのとき、自分で定義した関数によって
ソートしたいです。どうすればよいですか?
- 95 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 09:45:44 ]
- vectorは連続領域に格納される(配列と同じように扱える)から普通にソートしたらいい。
- 96 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:00:45 ]
- >>94
std::sort
- 97 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:14:42 ]
- スタティックリンクとかシャードリンクとかそのあたりのことが勉強できるサイトありませんでしょうか?
- 98 名前:デフォルトの名無しさん [2008/02/07(木) 14:26:10 ]
- >>96
sort(vec.begin(), vec.end(), func); と書きたい時、funcはどういう風に書けばよいでしょうか? class func : public binary_function { bool operator()(const string &a, const string &b){} }; と書いてみたのですが、コンパイルも通りません。 どうかお願いします。
- 99 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:29:08 ]
- binary_functionでぐぐれ
- 100 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:30:57 ]
- >>98
厳密に言うとstrict weak orderingを満たすように書く ことになるが、 struct func : public binary_function { bool operator()(const string &a, const string &b) { return a < b; //辞書順で昇順 } }; sort( vec.begin(), vec.end(), func() ); とかでどう?
- 101 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:31:04 ]
- 質問です。
VC6.0で自前のライブラリをまとめたStatic Link Libraryを作っています。 そのライブラリを実際に他のプロジェクトで使う際、リンクのところで以下のように躓きました。 ・すでに LIBCMTD.lib(crt0dat.obj) で定義されています これを筆頭に、大量にリンク警告がでました。 調べたところ ttp://m--takahashi.com/bbs/pastlog/08900/08806.html libの方はシングルスレッドで。テストプロジェクトのほうはマルチスレッドでコンパイルしているのが問題のようでした。 両方マルチスレッドにしたところ… ・"libcmt.lib" は他のライブラリの使用と競合しています 今度はこれだけでました。 調べたところ ttp://m--takahashi.com/bbs/pastlog/03900/03888.html libがReleaseコンパイルで、テストプロジェクトがDebugコンパイルなのが悪いようでした。 libをRelease版とDebug版の両方をつくり、適切にリンクするようにしたところ、エラーがきえました。 ここで疑問なのですが、今後の汎用性を考えるとlibは ・シングルスレッドDebug版 ・シングルスレッドRelease版 ・マルチスレッドDebug版 ・マルチスレッドRelease版 をそれぞれ用意しておかなければならないのでしょうか? 一般的に用意されている"winmm.lib"などは、何も考えずにstdafx.hに #pragma comment(lib, "winmm.lib") と書いておけば、シングルスレッドだろうがマルチスレッドだろうが、DebugだろうがReleaseだろうが適切にリンクされました(警告やエラーでません) 自作のlibも同じくらい気軽に使えるようにするには、どのようにしたら良いのでしょうか?
- 102 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:32:02 ]
- おっと、
>>99を見て struct func : public binary_function<string, string, bool> { bool operator()(const string &a, const string &b) { return a < b; //辞書順で昇順 } }; か。
- 103 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:38:33 ]
- const が有った方がいいな。
- 104 名前:デフォルトの名無しさん [2008/02/07(木) 14:39:36 ]
- ハードディスクへの書き込みで、メモリへのキャッシュを自動で行ってくれる命令ありますか
- 105 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:52:29 ]
- おっと、
>>103を見て struct func : public binary_function<string, string, bool> { bool operator()(const string &a, const string &b) const { return a < b; //辞書順で昇順 } }; か。おれはconstをよく忘れる。
- 106 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:53:31 ]
- >>101
・Debug版は公開しちゃいけません ・現行VCはシングルスレッド版ランタイムがありません >>104 そんな「命令」なんてあるもんですか。
- 107 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:59:57 ]
- >>106
MFC等のデバッグ版DLLの再配布が禁止なだけで 自前ライブラリのデバッグ版配布は禁止じゃねえだろ。
- 108 名前:デフォルトの名無しさん [2008/02/07(木) 15:05:41 ]
- >>106
自前でキャッシュ用意しましたよ
- 109 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:16:46 ]
- >>106
101です お返事ありがとうございます。 >・Debug版は公開しちゃいけません 確かにそもそもDebug版は用意しておく必要ないですよね ただ、d3d9.lib も、デバッグ版らしき d3d9d.libというものがあります。 もしかして「Debug/Releaseで自動的にリンクを変えている」なんていうのは私の妄想で d3d9d.libは使われていないのでしょうか? >・現行VCはシングルスレッド版ランタイムがありません これはつまり、世の中に配布されてるlibはマルチスレッド版で作られており、 マルチスレッド版libは、シングルスレッドなプロジェクトで利用しても特に問題が起きないということでしょうか? (実際試してみたところ、シングルプロジェクトからマルチLibを呼び出してもエラーとなりませんでした) そもそも「_beginthreadを使うためにはマルチスレッド版にする必要がある」という認識しかもっておらず、 「マルチスレッド版にしないことによる利点」は知らないのです
- 110 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:21:59 ]
- >>109
まず、デバッグ版のlibがあるやつはpragmaで切り替えてるはず。 自分の作ったlibが物によって変わるのは、そいつの中でデバッグ版や MT版のlibを呼んでるから。 そういうの避けたければスタティックリンクしてしまうといいかも。
- 111 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:08:21 ]
- >>109です
>(実際試してみたところ、シングルプロジェクトからマルチLibを呼び出してもエラーとなりませんでした) これですが、勘違いでした。 やはり「マルチスレッド版のlibファイル」を「シングルスレッド版のプロジェクト」からリンクすると、 LINK : warning LNK4098: defaultlib "LIBCMTD" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください となってしまいました。 (上のは、Debugマルチ版LibをDebugシングル版のプロジェクトにリンクした場合の警告です) >>110 なるほど。hファイルあたりで、#ifdef _DEBUG やら色々としているのでしょうか。 >そういうの避けたければスタティックリンクしてしまうといいかも。 ちょっとこの意味合いがわからないのですが、詳しく教えていただけますでしょうか どこかのサイトへのリンクでも構いません
- 112 名前:デフォルトの名無しさん [2008/02/07(木) 16:26:09 ]
- 教えてください。
以下の式で、shinが偽になるのはなぜでしょうか? unsigned int a =10, b = 20; char shin = ((a - b) < (b - a)); (a - b) = -10, (b - a) = 10 なので、shin = 真になるように思うのですが。。。
- 113 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:29:04 ]
- unsigned同士の演算の結果はunsigned
- 114 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:32:12 ]
- int型変数(-32768〜32767)に-40000とか入れようとしたらどうなると思う?
- 115 名前:デフォルトの名無しさん [2008/02/07(木) 16:32:16 ]
- ありがとうございます
- 116 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:37:11 ]
- >>101
コンパイラオプション/ZlってVC6にない? これはobjファイルにLIBCMTD.LIBとかCRTへの参照を 埋め込まないようにするコンパイラオプション。 1つのlibで全てを賄えるようにもなる。 けど現実的には最適化・デバッグオプションの有無で、 少なくともRelease/Debugの2種用意すべきだと思うけど。
- 117 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:48:16 ]
- >116
Zlオプションを使ったところ、DebugプロジェクトからReleaseLibを使っても警告がでなくなりました。 ありがとうございます。 (最初 Zl が ゼット・アイだと思って混乱しましたw ゼット・エルですね) しかし、StaticLibraryの作り方を詳しく解説しているサイトって全然見当たりませんね…。 Lib側としては、Releaseだけ用意しておけばいいと思うのですがどうでしょうか? Libがバグっていないと仮定して利用するのが前提ですけど
- 118 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:51:38 ]
- >>101
winmm.libってwinmm.dllの単なるインポートライブラリでは? VCのランタイムをリンクしないライブラリならそういった問題は当然起きない
- 119 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:52:47 ]
- 別にReleaseだけでもいいと思う。
DLLだとデバッグ版も提供なんて話聞かないし。
- 120 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:02:19 ]
- >>118
あ、なるほど。そういえばlibにはもうひとつ「DLLとリンクするためのインポートライブラリ」という役目がありましたね。 winmmはそっちですか。 (拡張子変えればいいのになぁ…) >>119 了解しました。 >ALL 大変参考になりました。 ありがとうございました!
- 121 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:19:25 ]
- デバッグ版のlibを提供するのはlibをデバッグしてもらおうということじゃなくて、
それを使ったプログラムもLibのソースをトレースできるようにだよw
- 122 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:23:39 ]
- >121
誰への返事だ??
- 123 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:26:13 ]
- 環境依存のレスはすべてスルーしてます
- 124 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:36:05 ]
- スレタイももちろんスルーです
- 125 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:04:43 ]
- template<typename T>
void foo() { T x = T(); } intやint*などの基本型に対してテンプレートでのデフォルト初期化 を可能にするために上のような表記が許されておりint*ポインタも渡せます。 (NULLポインタに初期化されている) しかし、以下のポインタの初期化は許されていないのでしょうか? int* p = int*(); //コンパイルNGでした int i = int(); //OK
- 126 名前:デフォルトの名無しさん [2008/02/07(木) 18:05:37 ]
- ISO 9660ファイルを参照できるDLLとかありませんか
- 127 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:28:40 ]
- >>125
それはできないけど、これならできる。 typedef int* pint; template<typename T> struct identity { typedef T type; }; int* p1 = pint(); int* p2 = identity<int*>::type();
- 128 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 19:05:06 ]
- メモリが解放されてるかどうか確認する方法ってなんかあるかな?
void a( void* p ) { if( rand() %2 ) delete p; } void main () { char*pc = new char[100]; a(pc); // pcが解放されてなかったら解放 if( soreppoino( pc ) ) delete pc; } みたいな。
- 129 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 19:08:34 ]
- すまん誤爆った・・・ってここでもいいのかなこれ
- 130 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 19:13:57 ]
- >>127
typedefで可能ということは単なるシンタックスの問題だという ことですかね。だとしてもfoo<int*>()は結果的に int*()となるからNGのような気もしますがね。
- 131 名前:デフォルトの名無しさん [2008/02/07(木) 19:31:29 ]
-
リスト管理の時 リストのアイテムをdeleteしたとき、自動的に所属するリストからはずれる機能は、 stlでvectorとかlistとか使って所属リストを覚えて、リストからはずすより、 前後のポインタを持った、自己連結クラスのほうが速度的に早いですか? というか、deleteしたとき、自動的に所属するリストから外れるtemplateみたいなもの STLみたいな標準ライブラリにありますか?
- 132 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 19:34:12 ]
- >>130
単純にシンタックスの問題っぽいよ >postfix-expression: > simple-type-specifier ( expression-listopt ) (略) >simple-type-specifier: > ::opt nested-name-specifieropt type-name > ::opt nested-name-specifier template template-id > char > wchar_t > bool > short > int (略) >type-name: > class-name > enum-name > typedef-name >class-name: > identifier > template-id intやクラス名やtypedef名はOKだけどint*は構文に合致しないっていう・・
- 133 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:03:47 ]
- >>128
そういうクラスでも用意しない限り、ありません。 つーか、そんな阿呆なメモリ管理戦略はありえません。 >>131 逆に、リストにあるオブジェクトをremoveするときにdeleteしては?
- 134 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:22:12 ]
- 1904年の日露戦争の際に、ロシア正教会は全教会をあげて日本に天罰を
下すように神に祈りをささげた。結局なにも天罰は降りず、ロシアは負けた。 20年後、日本で関東大震災が発生。ロシアの物理学者カピッツァはこの事実から 「神はわれわれから9光年以内にいる」と結論を下したという。
- 135 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:47:14 ]
- お、おかしいアル・・・
/'⌒`ヽ、 5年後の世界に行ったらチューゴクがなかったアル・・・ ヽ、┗ ノ `ーー' γ⌒`ヽ /'⌒⌒ヽ、 ,-ーー-、 .|| ̄ ̄ ( ┃ ⌒ヽ / ┃ ) || ∧_∧ \ ━┛ ) .(. ┃ ) ||. ( `ハ´;) ヽ、__,ノ || _(つ¶¶と)__ /||'''''| 三 | |'(⌒) / '―――――`  ̄ \ `============'
- 136 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:51:06 ]
- >>132
なるほど。まあテンプレートのときのために用意されてる 規則なので、そのときだけ利用します。 ありがとうございました。 ところで、みなさんは原文の規格を持ってるんですか? 買うと4万近かったので高くてとても買えません。
- 137 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:14:24 ]
- JISならオンラインで読めるじゃん。画像だけど。
- 138 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:17:09 ]
- Visual C++ 6.0を使っているんですけど
C++のプログラムを実行すると c:\program files\microsoft visual studio\vc98\include\new(16) : error C2143: 構文エラー : ';' が '<class-head>' の前に必要です。 c:\program files\microsoft visual studio\vc98\include\new(16) : error C2501: '_STD_BEGIN' : 識別名を宣言するのに、型が指定されていません。 c:\program files\microsoft visual studio\vc98\include\new(16) : fatal error C1004: 予期せぬ EOF が検出されました。 と出てしまいます。 どんなプログラムでもこのエラーが出てしまい実行できません… どのようにすればこのエラーはなくなりますか?
- 139 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:18:22 ]
- >>137
そこでドラフトですよ。 若干現規格と違うけど、 古いドラフトだとまあまあ現規格に近いから十分参考にはなる。
- 140 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:25:29 ]
- >>138
必要なものが入ってないか入れる設定にしていない。 _STD_BEGINってのはSTLが使う宣言だからSTLが使えないんだろう。 (vectorでも使ってるんかね?) 俺はSTL使ってないんで後はぐーぐる先生か他の人にまかすわ
- 141 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:37:29 ]
- >>137
>>139 あれ検索できないから不便ですよね。まあ無料なのでたまに見ますが。 正式版を無料で配布して欲しいですね。
- 142 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:03:32 ]
- >>138
Visual C++ 2008 Expressとかだとどうなる?
- 143 名前:デフォルトの名無しさん [2008/02/07(木) 22:50:19 ]
- >>105
(遅くなりましたが) ありがとうございました。
- 144 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:20:56 ]
- >>128
標準では用意されていないので、人によっては解放したらその領域を指 していたポインタ変数を (* 自分で *) NULL にしておくようにしてい る人もいる。 どっちかって言うと、バグってた時の二重解放除けとか、変な領域を壊さ ないようにと言う防御策だが。 void a( void** p ) { if( rand() %2 ) delete *p; } void main () { char*pc = new char[100]; a(&pc); // pcが解放されてなかったら解放 if( soreppoino( pc ) ) delete pc; }
- 145 名前:デフォルトの名無しさん [2008/02/08(金) 01:48:10 ]
- 確保していないのにdeleteするとバグるんですが対処法ありますか
- 146 名前:デフォルトの名無しさん [2008/02/08(金) 01:50:44 ]
- 単独ではつかわないでコンストラクタ、デストラクタ内で使えば安全かなあ
- 147 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:59:05 ]
- void a( void** p ) {
if( rand() %2 ){ delete *p; *p = NULL; // delete後はNULLを入れておく } } void main () { char*pc = NULL; // ポインタは普通NULLで初期化しておく if( rand() %2 ) new char[100]; a(&pc); delete pc; // pcがNULLなら何もしない }
- 148 名前:デフォルトの名無しさん [2008/02/08(金) 01:59:41 ]
- while (cin) {
... } という処理についてなんですが、cinって最初はとりあえずtrueになるのですか? すると、いつfalseになるんですか? エラーフラグがたってればfalse、それ以外はtrueになるのかな? cinで何かデータを読み込んだ後だけtrueになるのかと思ってました。
- 149 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:00:03 ]
- > new char[100];
pc = new char[100] でした。
- 150 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:04:09 ]
- スタート
↓ 標準入力からデータがcinに行く ↓ cinがtrueになる ↓ while(cin)が評価される というかんじなんじゃね?
- 151 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:12:09 ]
- >>147
C++では汎用ポインタへのポインタって合法だったっけ。
- 152 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 03:44:28 ]
- 問題ない。
- 153 名前:デフォルトの名無しさん [2008/02/08(金) 03:55:20 ]
- coutとfstream(適当なファイルに対してオープン済みのもの)とのそれぞれに、ほぼ同じ処理を書くのですが、
1つの関数にまとめたいと思うのですが、どうすればいいでしょうか? void print((型が分からない) stream) { stream << "hogehoge" << endl; ... } こんなのも考えてみたのですが、コンパイルできず、ダメでした。 template<class T> void print(char *filename) { T outStream; if (filename) outStream.open(filename); outStream << "hogehoge" << endl; ... } どうかよろしくお願いします。
- 154 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 07:25:40 ]
- >>138
new ヘッダをインクルードする前に new をマクロで置き換えてないか?
- 155 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:49:42 ]
- >>153
std::ostream
- 156 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:53:19 ]
- サクラエディタのソースコードを眺めていたのですが、コメント部でよくわからない表記があります。
@param などはなんとなく想像がつくのですが、「//!<」や「/*! */」は何を意図しているのでしょうか。 どなたか教えてください。
- 157 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:57:37 ]
- >>156
つ[Doxygen]
- 158 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:59:11 ]
- まさに、それですね。
ありがとうございました。
- 159 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:23:53 ]
- 例外処理の使い方がいまいち分かりません
例外を投げたらその処理の中で解決した方が良いのか それとも解決方法を使う側に投げっぱなしにしてしまうのか 例外をどういう形でthrowするのがいいのか なんというか感覚的に掴みにくいというかなんというか
- 160 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:25:33 ]
- 無用物
- 161 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:32:44 ]
- 参照を返すとオブジェクトが捨てられたときに
帰ってきたものも向こうに?
- 162 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:34:05 ]
- >>159
自関数の中でリカバリできるならcatchして処理すればよい そうでないなら呼び出し元にまかせる 普通のエラー処理と同じようなもんだ 自分で処理できるならして、処理できないなら呼び出し元にエラーコードなりなんなりをreturnするだろう エラーコードのreturnが例外のthrowに変わるだけ
- 163 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:34:37 ]
- >>161
日本語で
- 164 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:48:01 ]
- >>162
そういう感じで良いんですか 気軽に使えるなら使ってみようかな・・・
- 165 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:03:21 ]
- とある3種類の計測器をモニターするプログラムなんですが
似てるけど若干ちがう命令が3つあるとします この場合 クラス分けをしていくとき 計器の共通化持つクラスを基底として、それぞれの機能をもつ派生クラスを作るか 機能の共通処理をもつクラスを基底として、それぞれの計器にあわせて派生クラスを作るか どちらが今後計器が増える可能性を加味したとき、よい設計でしょうか
- 166 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:07:41 ]
- >>165
その計測器メーカに合わせるのが一番。 あるメーカは旧型機種の機能を改変しつつ新機能を作るかもしれないし、 あるメーカは旧型機種の機能を残しつつ新機能を作るかもしれない。 なんてことは兎も角、使い易いように作れば?
- 167 名前:138 mailto:sage [2008/02/08(金) 15:05:04 ]
- 返信遅くなってすいません!
>>140 STLは使ってなくてもこのエラーなんですよ… Hello Worldみたいな文字を出力するだけのプログラムでも 実行できないです。 >>142 Visual C++ 2008 Express Editionで実行したらできました! ありがとうございます。 >>154 マクロも使ってないので違うと思うのですが… Visual C++ 6.0を使い慣れているので どうにかして実行させたいのですが・・・
- 168 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:22:22 ]
- class Fruit;
class Apple : Fruit; std::vector<Fruit> fruits;を作ると 抽象クラスをインスタンス化できません。 と言われるです。どうするですか?
- 169 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:23:31 ]
- Fruit がそういうつくりになってるんじゃないの?
- 170 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:24:38 ]
- >>168
class Fruitを具体化してください。
- 171 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:36:19 ]
- std::vector<Fruit*> fruits;
- 172 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:14:45 ]
- コンパイラにBCCを使って数値計算をしているのですが、
しばらくプログラム実行していると、EXP: OVERFLOW ERRORと出ます。 これは、exp関数に入れた値がexp関数の扱える値(doubleの範囲)よりも大きいと言うことでしょうか?
- 173 名前:デフォルトの名無しさん [2008/02/08(金) 16:23:52 ]
- >>167
俺、解決方法知ってるんだが…
- 174 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:25:09 ]
- vevtorにvcの_com_ptrは入りますか?
- 175 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:59:55 ]
- コピー初期化もコピー代入もできるから問題ないはず。
|

|