[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/28 11:42 / Filesize : 246 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.45【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:09:22 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.44【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1194016813/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

416 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 15:15:36 ]
>>413
ようわからんがtemplateとかboost::bind(std::bind1st, std::bind2nd)使えばよさそうな気がする。ファンクタも調べた方がいいかも。
試しに同じような事するの書いてみた。

template<typename Func> double kihon(Func func)
{
 for (j = 1; j <= n; j++)
  func(x);
 return ret;
}
double hasei1(double x, double y) { return return x*sin(x+y); }
double hasei0(double x) { return 1.0 - kihon(boost::bind(&hasei1, _1, x)); }

int main()
{
 kihon(&hasei0);
}

417 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 16:17:11 ]
>>416
本当にどうもありがとうございます。まだ、自分のプログラムでは解決していませんが言わんとしていることが
よくわかります。たしかにテンプレートを関数のポインターに使えば解決しそうです。C++は初めてなので
参考になります。重ね重ね、ありがとうございます。


418 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 18:05:37 ]
あるライブラリ(A)をラップした、全く同一のインターフェイスが使えるDLL(B)を作りたいのです。
つまり、DLL(B)はライブラリ(A)のすべての関数をエクスポートします。

これを実現するために(とりあえずwin32環境限定の話)
ライブラリ(A)をDLL(B)にスタティックリンクさせ、ライブラリ(A)の各関数宣言に
__declspec(dllexport)をつけたファイルをDLL(B)からインクルードさせたのですが、
どうもこれでは上手くいかないようで、DLL(B)からライブラリ(A)の関数がエクスポートされていませんでした。
そこで質問なのですが、DLLからライブラリを直接エクスポートすることは可能なのでしょうか?
もし可能ならやり方を教えていただけるとありがたいです。

(ライブラリ(A)をDLLにするという方法はとりあえず却下でお願いします。
今は別の方法としてライブラリ(A)のソースファイルを直接DLL(B)に追加しています)

419 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 18:48:06 ]
VC++2005StandardでMFC使おうとしてるんですが
ウェブで調べてもVC6.0系の使い方ばかりで全然分かりません
2005のMFCの入門的なサイトってないですか?
できればopengl を絡めたところがいいんですが

420 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 18:55:07 ]
MFCはマイクロソフトファンダメンタルクラスだろ? バージョンによって言語(クラス)の使い方が変わるかよ
6用でも関係ないだろ

421 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 19:05:27 ]
クラスウィザードとかを使うのに、IDEのどこのボタン押して、どの選択肢を選べばいいのか?
・・・ってのを知りたいのじゃね?

422 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 19:53:19 ]
そういやVC2008EEが来るな

423 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 20:02:56 ]
VC2005でもういいです

424 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:09:24 ]
Hoge hoge1;
Hoge *hoge2 = new Hoge();

の違いがよくわからないのですが
newした場合、普通に宣言するより良いことがあったりしますか?



425 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:15:06 ]
>>424
絵に描いたような初心者か、釣りか、のどっちかだな

426 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:17:47 ]
ヒープ領域は量が多い (ハードディスクもメモリ代わりになる)
自分で変数の領域を開放できる
ヒープに確保すれば、高速な動作が必要な変数をスタック領域、レジスタ領域に割り当てられやすくなる

427 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:19:40 ]
大量にメモリ食うやつは全部newとかにしておけばよい 
実メモリを多く空けておくことが大事

428 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:21:41 ]
STL 頼ってるから最近 new 使ってないな…

429 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:27:03 ]
メモリどうこうより、初心者には寿命の違いを説明した方がいいのではなかろうか

430 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:27:30 ]
調べてきたけど、スタック領域はコンパイル時に決定されるらしい
メモリ食うやつは、動的に確保しないとプログラム終了までスタック領域として確保されっぱなしってことだ
他のプログラムや自分のプログラム内でもメモリ確保が難しくなるということだ

431 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:31:08 ]
30バイト以上の確保は動的確保にしようぜ newやvectorやstringを使おう

432 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:31:23 ]
>>424
Hoge hoge1; 
の場合、hoge1の寿命がその関数(あるいはブロック)に縛られる。
関数を抜けた後もhoge1を維持することは出来ないし、関数を抜ける前にhoge1を消すことも出来ない。

Hoge *hoge2 = new Hoge();
の場合、hoge2の寿命は自分でコントロールできる。
関数を抜けようが抜けなかろうが、deleteするまでは消えないし、deleteすればいつでも消せる。

433 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:35:35 ]
配列は動的確保、自動開放するvectorがあるけど 変数は動的確保、自動開放する命令ってないよね?
Hogeクラスが5Mとか使うとは想像していないのだろうか?

434 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:36:37 ]
auto_ptrのことか?ちょっと違うか?



435 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:57:06 ]
class Hoge{ char x[10000]; };

auto_ptr< Hoge > hog(new Hoge);

こうやって使うのか 勉強になった でもアクセスが*付けないと駄目で不便だよね

436 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:02:26 ]
そんなあなたに
boost::scoped_array
boost::shared_array

437 名前:424 mailto:sage [2007/12/17(月) 22:06:21 ]
しょうもない質問に答えてくれてありがとうございます

とりあえず普通に宣言しておけば大丈夫だ
なんて思ってた自分が馬鹿でした・・・
しっかりdeleteする必要がありますが、
なるべく動的確保にしておいた方が良いんですね

もうすこし自分でも調べてみようと思います
ありがとうございました

438 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:10:48 ]
int型やchar型やdouble型の変数を動的確保するのは止めよう
あとループの変数も動的確保するのは止めよう
判断基準は、メモリを消費するかどうかだろう

439 名前:!=438 mailto:sage [2007/12/17(月) 22:27:09 ]
>>438
判断基準に「(ループ内など)速度が必要か否か」も加えるといいかも。
10万回、100万回のループになると毎回newするのも…

まぁ、その場合は最初にnewして使いまわせ、って話になるわけだが。

440 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:30:32 ]
ループ内で毎回な別領域の確保が必要な場合はあるけどね・・・
流用できるなら内部でしたらだめだな

441 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:38:19 ]
基本的にループの変数は直前に確保した方が良いのかなあ
以前から使っている変数だと、レジスタにのっている可能性は低いし、ループで使うからと言って移動はしないよね?
for( int )だと最適化されそう

442 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:12:40 ]
>>441
変数の用途が明確な方が最適化対象になりやすい。

443 名前:デフォルトの名無しさん [2007/12/17(月) 23:42:33 ]
別のスレッドで返答がもらえなかったのでこちらで。

なぜcallocは2引数関数なのでしょうか。ゼロクリアするだけならmallocのように1引数でも可能だとおもいます。
2引数のほうが最適化しやすいからだときいたことがありますが、具体的にはどのような最適化が考えられるでしょうか?


444 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:51:31 ]
callocのcて何て意味?



445 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:52:34 ]
>>443
例えば80486以降のインテル系CPUはSTOSB STOSW STOSDという三つの命令があり、
それぞれバイト、ワード、ダブルバイト単位でレジスタから転送を行う。
他のCPUでもサイズに応じた専用のインストラクションを持っていることはよくある。
そのどれを使うかとかいったヒントになる可能性があると思う。

446 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:53:00 ]
clear?


447 名前:445 mailto:sage [2007/12/17(月) 23:53:15 ]
ダブルバイトってなんだよ。ダブルワードの間違いな。

448 名前:デフォルトの名無しさん [2007/12/17(月) 23:56:16 ]
>>445
なるほど。ありがとうございます。
しかしその程度なら、要求されたサイズの下位数ビットを見れば判断できる気もするが・・・。

449 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 00:05:43 ]
>>443

callocは一応「配列を確保する関数」だからじゃない?

最適化に関しては↓がヒントになるかも。
www.bohyoh.com/CandCPP/FAQ/FAQ00096.html


450 名前:デフォルトの名無しさん [2007/12/18(火) 00:09:54 ]
>>449
最適化については何も解説していないような・・・


451 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:03:49 ]
>>420
ファンダメンタルかよ

452 名前:デフォルトの名無しさん [2007/12/18(火) 02:16:52 ]
signed型へ<<や>>演算したときの結果の符号ビットや符号拡張有無って
規格で決まっていますか?


453 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 02:32:06 ]
>>452 いいえ。

454 名前:デフォルトの名無しさん [2007/12/18(火) 09:57:37 ]
C++ 初心者です。C++ でこんなコードを見かけたのですが、 struct S { S( int x ) : x_( x ) {} int x() { return x_; } int x_; }; 2 行目の意味がわかりません。とくに x_( x ) {} の部分が頭の中でパーズできないんですが、これは何を定義しているの?



455 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 09:59:38 ]
: x_( x ) だな
x_をxで初期化している

コンストラクタ初期化子とかでぐぐると幸せになるかも

456 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 10:37:10 ]
この書き方で「2行目の意味が」ってのも凄いな
ナチュラルな喧嘩の売り方するなぁと感心したw

457 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 10:42:22 ]
コンストラクタの初期化子で配列の初期化ってできる?

458 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 11:07:46 ]
>>457
組み込み配列についてはできません。 std::vector ならできます。

459 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 11:26:54 ]
>>458
ありがとう
じゃあコンストラクタ内で普通に代入するか


もう一つ質問
固定長配列にvectorを使う意味ってある?
あるとしたら何?

460 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 11:34:14 ]
>>459
サイズの管理も一緒にしてくれる。
未来永劫何があってもサイズが変わらない場合を除けば、この利点は小さくない。

461 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 11:35:23 ]
>>459
多くの実装では assert() などでデバッグ用の範囲チェックが入っている。
begin(), end() があるので標準アルゴリズムが使いやすい。
要素の比較に基づく比較演算子が定義されている。
安全で軽い swap() が使える。

462 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:02:09 ]
C言語でvoid型の関数を任意の場所で終了させるにはどうすればいいのでしょうか?
何か値を返せる関数ならreturnすればいいと思うのですが
voidなのでreturnをすると怒られてしまいました

463 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:04:39 ]
return;

464 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:05:52 ]
>>462
void func(){
return;
}



465 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:09:42 ]
>>462
void func()
{
...;
goto end;
...;
end:
}
or
void func()
{
...;
if (0) {
...;
}
}

466 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:15:41 ]
>>460-461
サンクス

467 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:16:11 ]
ああ、なるほど
値さえ返さなきゃ怒られないんですね
0を返しておりました

468 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:20:25 ]
>>460
static const int foo[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
みたいな固定長配列なら、sizeof(foo) / sizeof(* foo)でsize()相当だと思うが、それでもメリットだと?

469 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:23:26 ]
STLのコンテナとして使える

470 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:26:16 ]
boost::array

471 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:50:19 ]
じゃあそれポートして使いまする

472 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:51:25 ]
固定長配列テンプレートはいいよね
余分な領域取らないし

473 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:59:15 ]
boost::checked_deleteってそんなに役に立つか?

474 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:03:58 ]
初心者でも何か作れる物はないだろうか?



475 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:05:18 ]
>>474
アドレス帳
ノベルゲーム
etc

476 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:07:47 ]
>>475
ノベルゲームを作れるお勧めのwindows上で動く
アプリとかありませんかね。


477 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:20:59 ]
C言語でいいじゃん
printfとscanfで作れるぞ

478 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:25:14 ]
おまえらって何が目的でC言語使ってんの?

479 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:29:21 ]
>>473
なんで役に立たないと思うの?
あと、 boost スレに行ったほうがいいかもね。

480 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:45:48 ]
>>478
プログラミングするのが楽しいから

481 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 15:18:50 ]
まともに仕事で使おうとすると、
boostなんてフリーのライブラリは、
使用許可がおりない件について

誰が責任もてるの、って怒られるぜよ

482 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 15:34:04 ]
boostからポートした自作ライブラリを使うんだよ

483 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 15:36:43 ]
それを言い出すと、gccや下手すればLinuxそのものも使えなくなる罠。

484 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 15:41:40 ]
>>483
プロジェクトの種類や客の流儀とかなんとかで、
そのとおりな制約がつく仕事も実際、けっこうある。

・・・いや、あった。もう地獄から永久に開放されて
こんな時間に2chしてる俺にはどうでもいい話



485 名前:デフォルトの名無しさん [2007/12/18(火) 15:46:46 ]
参照のつかいかたがよくわからないので教えてください。POCO::Loggerというライブラリをつかっています。
hasがLoggerのポインタを返して、getが参照を返します。createで作ります。
POCO::Logger* buff = POCO::Logger::has("hoge");
if (buff == NULL) {
  // 無いから作る
  POCO::Logger& logger = POCO::Logger::create("hoge");
  logger.information("@@@@@");
} else {
  // あるから使う
  POCO:Logger& logger = POCO::Logger:get("hoge");
  logger.information("@@@@@");
}
// @ほんとはここでlogger.information("@@@@@")にして、↑の@@@@@出力部分は消して共通化したい
というコードは動くんですが、最終行で出力する処理を入れて
共通化したいんですけど、参照ってポインタみたいにいれないでおくとかができないと思っています。
このような実装はみなさんどのようにされていますか?

486 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 15:51:11 ]
>>481
フリーとは言っても誰が作ってると思う?
使用許可を出さない奴本人に
『おまえが判断できる程のレベルかよ?』
って言い返す。

487 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 15:52:29 ]
>>479
不完全型のチェックにしか使えないよね。
全く役に立たないとは思わないけど、あえて使う意味はあるのかと。

488 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 16:13:45 ]
>>485
POCO::Logger & logger = buff == NULL ? POCO::Logger::create() : POCO::Logger::get();
logger.information();

489 名前:デフォルトの名無しさん [2007/12/18(火) 16:22:40 ]
>>488
ぉぉすばらしい。ありがとうございます。そのような発想はありませんでした。
ちょっとトリッキーな気がするのですが、C++で参照を使うときは常識ですか?

490 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 16:45:28 ]
C++と言わず参照と言わず、割と使うけど。
Cでもこんなのとか。
FILE * fp = fileName == NULL ? stdin : fopen(fileName, "r");

491 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:52:49 ]
>>490 の
FILE * fp = fileName == NULL ? stdin : fopen(fileName, "r");
って どのように分解(解釈)されるの?

492 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:57:10 ]
>>491
fileNameがNULLだったらstdin、そうでなければfileNameをfopen()した結果をfpに代入。

493 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:05:23 ]
>>492
有難うございます。日本語ではそうなるのですか。
すみません、この1行をC言語に1行ごと(ステップ)に分解して書いたらどうなるのですか?

494 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:11:18 ]
FILE *fp ;
if( fileName == NULL )
{
fp = stdin ;
}
else
{
fp = fopen(fileName,"r");
}



495 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:12:19 ]
まあ、参照は初期化必須だから、>>488を分割して書く事は出来ないがな。

496 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:12:26 ]
FILE * fp =
fileName == NULL
? stdin
: fopen(fileName, "r");

497 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:13:39 ]
boost::optionalをパクればいい

498 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:23:44 ]
>>494
有難うございました
そうなるのですか、なんか>>490だと読みにくいですね

>>495
となると、参照のときは読みにくい構文使うしかないということですね

499 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:56:32 ]
>>498
俺が三項演算子を使うときは、条件部を必ず(単項式であっても)括弧で括ってる。
>>490の例の場合は、
FILE * fp = (fileName == NULL) ? stdin : fopen(fileName, "r");
まぁ、この辺は各々のスタイルの問題。

読みにくさについては内容の複雑さによりけりで、たとえば
int n = (hoge) ? 10 : 20;
程度の内容をif-else文で書くと、俺の感覚だと「無駄に物々しい」感じがして、逆にわかりにくいかな。

500 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:12:34 ]
三項演算子は禁止、
って、けっこうコーディングルールにされることが多い

501 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:18:45 ]
生粋の三項演算子erな漏れには辛い職場だ

502 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:29:24 ]
>>498
こんなんでもいんじゃね?

POCO::Logger* buff = POCO::Logger::has("hoge"), *logger;
if (buff == NULL) {
  // 無いから作る
  logger = &POCO::Logger::create("hoge");
} else {
  // あるから使う
  logger = &POCO::Logger:get("hoge");
}
logger->information("@@@@@");

というかhas()が返すアドレスの実体はgetで得られるインスタンスとは別物なん?
同一ならそのまま使えるだろうけど

503 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:29:27 ]
ff

504 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:36:13 ]
例外処理のthrowのメリットは?
普通に関数にとばすのはだめなのかい



505 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:21:22 ]
普通に関数に飛ばすとは、どういうやり方?
throwは関数の呼び出し元の呼び出し元の呼び出し元の・・・にずーっと遡っていけるところに意味がある

506 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:23:41 ]
昔のCのように、abort()を呼ぶとかそういう話?

507 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:53:58 ]
>>504の考える例外的な事態というのは、その場でプログラムを終了するタイプ「のみ」なんじゃないかな。
確かに、すぐ終了するのであれば、例外処理の存在意義である「簡潔かつ強力に特定の段取りまで戻る」
能力は要らないからね。

>>504
でも、例外発生後もまだプログラムを続行させる場合、「関数に飛ばして」例外処理を実現しようとすると、
結構面倒というか、入り組んでしまうことがある。
f1()から呼んだf2()から呼んだf3()から呼んだf4()の中で何か「例外的な状態」になった場合、f4()内に
if (失敗したという証拠) {
  例外処理();
  return 失敗したという合図;
}
を書くだけでなく、場合によってはf2()やf3()も、その「合図」がちゃんとf1()のもとへ帰っていけるよう、
バケツリレーのような構造の実現に協力しなくちゃならなくなったりするわけだ。
その例外は、自分とは直接関係ないことなのにね。

508 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 21:01:10 ]
ただやっぱり、Joelもいってるように、例外はきちんと
ハンドリング出来ているかが、コード面を眺めたくらいでは
すぐには判らないという弱点があるね。

戻り値ベース:
fp = fopen(filename, "w");
fwrite( var, 1,len,fp );     //ププ。エラー処理忘れやがんの。

例外ベース:
fs = new FileStream( filename, WRITE );
fs.Write( var ); //ファイル無かったら例外投げるから、
                   //呼ぶ側で対処しろと言うことかな〜?

509 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 21:07:30 ]
>>420
インターフェースが結構違うのでわからないんです

参考に見た6.0の解説を上げてみると
〜〜〜
左フレームのFileメタブをクリックして、Source FileのGlSampleView.cppファイルを開く
右のフレームに現れるソースファイル上で、右クリック。表示メニューのClassWizardを選択する←この時点で分からない
ここでViewクラスのメッセージ処理をカスタマイズする。
メッセージ欄から「WM_CREATE」を選択して関数追加ボタンをクリックする。
するとOnCreate()関数がGlSampleView.cppファイルに自動的に追加される。
〜〜〜

クラスウィザードのようなものは別の方法で見つけたんですがすると4行目のWM_CREATEが無い
といったように前に進みません

510 名前:339 mailto:sage [2007/12/18(火) 22:32:05 ]
1>index.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall std::ios_base::Init::Init(void)" (??0Init@ios_base@std@@QAE@XZ) が
関数 "void __cdecl std::`dynamic initializer for '_Ios_init''(void)" (??__E_Ios_init@std@@YAXXZ) で参照されました。
1>index.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall std::ios_base::Init::~Init(void)" (??1Init@ios_base@std@@QAE@XZ) が
関数 "void __cdecl std::`dynamic atexit destructor for '_Ios_init''(void)" (??__F_Ios_init@std@@YAXXZ) で参照されました。
1>D:\ta\c\works\online\Debug\dos.exe : fatal error LNK1120: 外部参照 2 が未解決です。


===index.cpp====
#include <iostream>

int main() {
std::cout << "Kitty on your lap";
return 0;
}
===============

/O2 /D "_MBCS" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt

/OUT:"D:\ta\c\works\online\Debug\dos.exe" /NOLOGO /MANIFEST /MANIFESTFILE:"Debug\dos.exe.intermediate.manifest"
/SUBSYSTEM:CONSOLE /ERRORREPORT:PROMPT kernel32.lib


リンクがうまくいってないってことかな?
ちゃんとライブラリフォルダをC:\Program Files\Microsoft Platform SDK\Libに設定しているのだが・・。

511 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:00:25 ]
たまに見かけるけとKitty on your lapて何なん?
調べてみたらゲームみたいだけどあれが元ネタ?

512 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:35:44 ]
>>510

iostreamってSDKじゃないだろ。


513 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:36:20 ]
猫でも分かるの人がサンプル文字列に使ってたな。
さらなる元ネタはよくわからないが。

514 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 00:07:13 ]
古いギャルゲーのタイトル



515 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 01:29:06 ]
問題分が
以下の手順を従い、経路選択アルゴリズムを評価せよ。

通信の発生:ランダムに送受信ノードを決定する。
通信の確定:与えられた送受信ノードの経路を決定し、その経路上のリンクの空き容量を1Mbpsだけ減少させる。
         ただし、空き容量のないリンクが存在する場合、この通信は確立しなかったものとして、何も行わない。
通信の終了:n回前に発生した通信の経路上の空き容量を1Mbpsだけ増加させる。ただし、その通信が確立していなかった場合には何も行わない。
評価:10000回の通信を発生させ、そのうちで確立できなかった通信の割合を求める。
試行の繰り返し:nの値を変えながら、上記の試行を繰り返す


プログラム自体(kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5554.txt)は拾ってこれたのですが
どこにグラフを入力していいのか分からなく困っています。
ちなみにグラフは以下に書きます
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5555.txt
左と中央がノードで右がそれをつなぐリンクの容量です。

516 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 01:38:58 ]
宿題スレへ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef