- 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
- 862 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:06:53 ]
- 糞すぎワロタ
遠慮せずに死ね
- 863 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:15:45 ]
- 自殺するくらいなら会社やめろよ。
マジで
- 864 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:38:20 ]
- あと人いるとこで飛び降りもな・・
- 865 名前:デフォルトの名無しさん [2007/12/26(水) 01:38:36 ]
- 演算子delete [] で質問です。
下のように書いて実行するとdeleteのところで落ちるのですが、 これはdelete []が配列の各要素に演算子delete を実行した後に スタック領域にあるオブジェクトをdeleteしようとするから落ちるということで正しいでしょうか? またdeleteはヒープ領域にあるオブジェクトにしか実行できないのでしょうか? int main() { int *x[10] ; for( int i = 0 ; i < 10 ; ++i ) { x[i] = new int(i) ; } delete [] x ; }
- 866 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:54:13 ]
- >これはdelete []が配列の各要素に演算子delete を実行した後に
実行しません。 newしたものをdeleteしてください。
- 867 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 07:54:04 ]
- new を10回呼び出したなら delete を10回呼ぼう。
new [] を1回呼び出したなら delete [] を1回呼ぼう。
- 868 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:19:21 ]
- 基底クラスをインターフェイスとしてサブクラスに機能を実装しているクラスがあります
今回、新しくサブクラスを用意することになりました。 しかし、今まであるメソッドに3つパラメーターを渡してあげてたのですが 新しいサブクラスのみ5つパラメーターを渡さないといけないようになってしまいました 他の部分に出来るだけ変更を少なく、今回の仕様を適応する良い方法あるのでしょうか? 恐らく元の設計も良くなかったのでしょうが 設計の段階でパラメーター数の変化に影響されにくい作り込みというのは可能なのでしょうか?
- 869 名前:865 mailto:sage [2007/12/26(水) 09:38:56 ]
- >866,867
ありがとうございます。deleteについてもう一度勉強しなおします。
- 870 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:53:33 ]
- >>868
そのクラスの目的も分からないし、 サブクラスを使ってる側を見ないと何ともいえないが。 >他の部分に出来るだけ変更を少なく、今回の仕様を適応する良い方法あるのでしょうか? 新しいサブクラスで該当のメソッドだけオーバーロード。 >設計の段階でパラメーター数の変化に影響されにくい作り込みというのは可能なのでしょうか? 引数にオブジェクト(クラス)を取るようなモジュール構成を考える、とか。
- 871 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:57:22 ]
- Win32APIなんかはパラメータは構造体で取って最初のメンバに構造体サイズ入れさせてそれでバージョン分けとかしてるな
- 872 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 10:38:19 ]
- >>870
研究用に使う測定器を管理するプログラムなんですが 今回の測定器だけ微妙に仕様がことなってまして扱えるパラメータが増えてますorz >新しいサブクラスで該当のメソッドだけオーバーロード。 基底クラスのポインタでサブクラスを示した場合、オーバーロードした関数は見えないのでは? やはり構造体で受けた方が良いのかなぁ
- 873 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:31:19 ]
- 動けばいいだけなら、unionなstruct作る
間違えてパラメータが来る可能性があるなら、 そのstructに区別がつくようなパラメータを追加する。 オブジェクト指向的には、基底パラメータクラス作って その派生オブジェクトを渡すのがいいんだろうけど そこまでするほどのものかは開発規模や環境による。
- 874 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:14:13 ]
- >>873
基底クラスの仮想関数の引数では基底パラメータクラスのポインタを受けて サブクラスで内部的に引数を派生パラメータクラスのポインタに移し直して処理する というのはありでしょうか? 大分日本語でOKにな文章ですが察してやってくださいorz
- 875 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:56:25 ]
- >>874
必然的にそうなる。 キャストはちゃんとdynamic_castでcast失敗したときのコードもちゃんと書いておく。 あとパラメータオブジェクトの生存期間をよくよく考えて実装すればOK テストプログラムではスタックから確保したオブジェクトをポインタ渡しにしたが 実際のプログラムではポインタのオブジェクトが開放されてしまい、 不正なメモリ参照で落ちることは容易に推測できる。 newして渡してやって、開放は受け取ったほうが、終了したら行うようにすればいいと思う。
- 876 名前:デフォルトの名無しさん [2007/12/26(水) 16:43:51 ]
- ウィンドウをクラスにする意味ってあるの?
- 877 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:10:53 ]
- >>876
あるよ
- 878 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:15:59 ]
- VS2005 VC
文字列char*型から、double型への変換は atof( char* 何某);でいいけど float型への変換はどうしたらいい?
- 879 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:16:15 ]
- >>877
あるの?
- 880 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:16:38 ]
- >>879
おまえは有無を聞いた
- 881 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:18:59 ]
- >>879
やっぱり無いかも
- 882 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:20:27 ]
- >>878
atofの結果をfloatでキャスト
- 883 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:27:06 ]
- >>882サンクス
882ですが、今手元に、コンパイラ無いけど char* str; double n; n = atof( str ); static_cast<fioat>( n ); これでOK?
- 884 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:28:03 ]
- ↑スマン
878デツ
- 885 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:32:39 ]
- あらゆるウィンドウは多重継承されていくんだ・・・!
- 886 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:38:07 ]
- >>883
float n = atof(str); これで十分
- 887 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:57:49 ]
- >>886
サンクス >>878=883ですが その変換して、警告が出たんで聞いたんですが・・・ 警告無視していいの?
- 888 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:12:57 ]
- >>887
安全なキャストではないからね
- 889 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:13:59 ]
- 趣味グラマだけど警告は大目に見てるけど本職さんはそうはいかないんだろうな
- 890 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:14:31 ]
- ×趣味グラマだけど
○趣味グラマだから
- 891 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:24:49 ]
- >>878=883ですが
趣味とか本職さんの問題ではないと思うんだけど char型1バイト=8ビット float型は4バイト=32ビット double 型は 8バイト=64ビット 結論は、C99では、 char型文字列からfloat型 この変換をサポートする、関数は準備されてないってことですね。
- 892 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:27:36 ]
- static_castなら警告はでないけど
- 893 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:36:19 ]
- >>889
うーむ、そんなもんなのかなぁ。 俺はいつも警告レベルを最大にして、それを全部潰さないと気が済まないんだけど、 これは「俺が趣味グラマだから」こだわれることなのかな、と思ってた。
- 894 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:40:08 ]
- 趣味グラマだから、本職より入念に危うい場所を潰してもいいしその逆でもいいんだろ?
- 895 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:40:17 ]
- msvcのWallは最凶
- 896 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:41:12 ]
- >>893
Warningは、実はバグのことがあるので、基本は全部潰したほうが良い。 あまり時間がなくて、どうでもいいwarning(「使ってない変数があるよ」とか)の 場合はスルーすることもある。 あと、昔作られたコードでは、「動いているから直さない」と言うことが結構ある。
- 897 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:41:51 ]
- アドベンチャーゲームの作り方を教えてくれる人いませんか?
- 898 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:43:37 ]
- ゲーム製作技術板にGO
ttp://pc11.2ch.net/gamedev/
- 899 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:45:48 ]
- プロンプトで牧場物語やってた時期がありました、あれは習作向けだな
- 900 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:47:36 ]
- double→floatで警告出るのは桁が切りつめられて精度が下がるから。
浮動小数点型なら精度下がるだけだから、再度倍精度にキャストとかしない限りは問題なす。 int→shortだと危険だけど。
- 901 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:48:10 ]
- アドベンチャーゲームならバッチファイルで作った記憶が‥‥
- 902 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:40:34 ]
- スパゲッティコード生成してくれるスクリプトあったよな、なんていったっけ
- 903 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:49:42 ]
- 俺俺
- 904 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:52:55 ]
- 俺俺がポインタのポインタみたく見える
- 905 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:53:54 ]
- そりゃ病気だ
- 906 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:58:56 ]
- 浮動小数点型は「上から」数桁を保存する。
整数型「下から」数桁を保存する。 だな。
- 907 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:05:00 ]
- 俺がポインタだ
- 908 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:06:01 ]
- 俺がポインタだとすると実体は何処にあるんだ
- 909 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:07:04 ]
- 俺が実体だ
- 910 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:09:04 ]
- 俺って実体がないんじゃね・・・?あれ?うわああああああああ
っていうホラーだったんだよ!
- 911 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:12:10 ]
- 感感俺俺
- 912 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:13:31 ]
- >>907-911
そこらの講座よりポインタについて理解できました ありがとうございます
- 913 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:14:16 ]
- >>908
ポインタだって実体だ、つまりポインタという役割を持って生まれたお前という存在が 確かにここに居るということだ、自信を持て。 とか、仄かに学習効果のあるネタ書くべきかな、初心者スレ的には。
- 914 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:17:53 ]
- CASLをちょっと習ってポインタを理解した俺はおかしかったのか
今回の例で書くと連想配列になりそうで困る
- 915 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:18:09 ]
- >>913
ポインタみたいな奴って結構多いよな
- 916 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:03 ]
- 安価とかのがわかりやすかろう
- 917 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:12 ]
- 嫌な役割だなw
- 918 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:47 ]
- 実体俺へのポインタの実体って親の子供みたいな
- 919 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:26 ]
- >>916
よくアンカだけ書き込む奴がいるけど、あれが俺ポインタか
- 920 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:37 ]
- 実体俺へのポインタの実体は子供で実体が子供のポインタ変数名が親か
- 921 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:54 ]
- >>914
MASM やってポインタを理解した俺もいる。
- 922 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:23:30 ]
- 俺はC#やってポインタを理解した
- 923 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:23:37 ]
- ポインタ変数俺の実体が>>922だとすると*俺==&俺に
- 924 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:24:14 ]
- >>923の>>922は>>923にしてくださいorz
- 925 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:24:44 ]
- ちげーよ*いらねえようわあああ
- 926 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:25:18 ]
- *の使い方が複数あるのが混乱の元かもな
- 927 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:25:44 ]
- >>923-924
それはきっとthisポインタだ
- 928 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:26:54 ]
- そこの説明したかったわけじゃなかろう
- 929 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:30:33 ]
- 俺ポインタってthisポインタのことだったのか
- 930 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:31:12 ]
- thisポインタだとすると俺俺はどうなる
- 931 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:32:04 ]
- 誰彼10円
- 932 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:36:48 ]
- WindowsAPI関係の質問はダメですか?
- 933 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:38:00 ]
- APIスレあるだろう
- 934 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:38:35 ]
- >>932
こういうスレもあるけど pc11.2ch.net/test/read.cgi/tech/1196874830/
- 935 名前:デフォルトの名無しさん [2007/12/26(水) 21:46:08 ]
- 質問なんですが、標準のnewって本当にそんなに遅いのでしょうか?
下のようにpoolを作ってnewの実行時間と比較してみたのですが差が出ません #include <boost/pool/pool.hpp> #include <boost/pool/object_pool.hpp> #include <iostream> #include <time.h> using namespace std; struct Abc{ int x; int y;}; int main(){ clock_t start1,end1,start2,end2 ; boost::object_pool<Abc> p; start1 = clock() ; for( int i = 0 ; i < 0xffffff ; ++i ) { Abc* x = p.construct(); } end1 = clock() ; printf("%.10f\n",(end1-start1)/CLOCKS_PER_SEC ) ; start2 = clock() ; for( int i = 0 ; i < 0xffffff ; ++i ) { Abc* x = new Abc(); } end2 = clock() ; printf("%.10f\n",(end2-start2)/CLOCKS_PER_SEC ) ; return 0;}
- 936 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:46:17 ]
- >>933-934
どうもありがとうございます
- 937 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:48:55 ]
- >>935
newの実装次第じゃ? 同じWindows用コンパイラでもVCとBCBじゃメモリマネージャの振るまい全然違うし
- 938 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:49:45 ]
- newを連続して呼ぶだけではダメ。ベンチにならない。
途中でdeleteしたり、サイズの違う連中もnew-deleteしたりしないと。
- 939 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:50:49 ]
- video.google.com/videoplay?docid=2914803742593360351
- 940 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:56:48 ]
- 時間の計り方間違ってね?
windowsのquerryperformancecounterを使ったprogress_timerで測定したら 0xffff回でもpool使った方が20倍くらい速いんだけど
- 941 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:59:45 ]
- >>935
趣味でちまちまと俺Lispを作ってて、型はすべてスマートポインタで扱ってるんだけど、 自分でメモリプール作って標準newと取り替えたら、スクリプトの実行速度が確か5割増しくらいになった。 開発環境はBCB6(これでCUIプログラム作ってるのって変かもしれんけど、そこはスルーしてw)。
- 942 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:01:44 ]
- >>941
FsstMM+標準newのテストもきぼんぬ
- 943 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:06:01 ]
- mallocはMT用ライブラリをリンクすると中でロックしてたりするしなー
- 944 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:17:36 ]
- クラス設計について詳しく書いてあるサイトとか本とかないだろうか?
C一通り終えてC++に移ったんだけれども、一先ず手元の本でテンプレートに入る前辺りまで進んだ そこでおさらいも兼ねて適当なプログラムでも組もうと思ったんだけど、実際に組んでみると クラス設計すんごい死ねる
- 945 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:19:30 ]
- 向き不向きがあるから注意な、ゲームとかCのが良かったり
- 946 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:25:21 ]
- UNIX環境でC言語を利用して音声ファイルを利用したいと思っています。
キーボードを入力したら音声が再生できるようになればよいのですが 検索したところWindows環境でのplaysound()という関数は見つかったのですが UNIX環境で使う関数が見つかりませんでした。 どなたか教えていただけないでしょうか?
- 947 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:31:25 ]
- >>944
クラス設計はオブジェクト指向のスキルが必要だから、 オブジェクト指向の本を読むといいよ クラスは、似たようなオブジェクトに共通する特性を表現したものだから、 まずはクラスとして表したい対象の共通的な特性が何かを考えて、 その対象がどういったデータと動作を持っているかを考えればいい。 例えば、おまいと俺の共通特性として、うんこする ってのを抽出したとするよ そうするとPersonクラスにはputOutUnko()なんてメンバ関数が定義されるわけだよ 腹の中にはうんこが溜まってるんだから、うんこがどれぐらい溜まってるかっていうデータを持ってるわけだ そうなると、volumeOfUnko なんていうメンバ変数が必要だよね class Person { public: void putOutUnko() { if(volumeOfUnko > 0) { volumeOfUnko--; } return; } private: int volumeOfUnko; };
- 948 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:31:52 ]
- 「UNIXでは」、と一言ですませられる関数・APIは「無い」
/dev/dspに書き込んだり、KDEのライブラリ叩いたり、 gstreamを叩いたり、環境によって全然別
- 949 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:34:04 ]
- >>948を翻訳すると、UNIXには標準の音声ライブラリがありません、ということ
だからライブラリを探す旅に出なさい、と
- 950 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:36:45 ]
- 逆に言えば、探せばライブラリは余裕で見つかる。
- 951 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:38:29 ]
- >>947
なるほど・・・まだC++の感覚を掴んでないようですorz どうしても基本はCにあってクラスを利用する、という使い方しかできてないです 例えばそのPersonクラスがあったとして人が複数人居た場合Personクラスのオブジェクトを複数作るんですよね? そういう時にPerson1とPerson2があるとして、Person1が何かするとPerson2に影響が出るような場合Person1のメンバ関数内でPerson2のメンバ変数を書き換える必要なんかが出てしまうと思うんです そういうのがいくつか出てきて、クラス設計の失敗だろうか?と思ったんですが、なんかすごい勘違いしてそうです。 指摘してもらえると助かりますorz
- 952 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:47:08 ]
- デザインパターンの本を読めば世界が変わるよ。
- 953 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:03:43 ]
- >>951
人の定義をPersonというクラスで行ったわけだから、個別の太郎やら花子ちゃんは、変数として宣言していく Person taro; Person hanako; taro.putOutUnko(); hanako.putOutUnko(); ここまではいいとして、 taroがhanakoのメンバ変数を直接いじるようなことはしない。 オブジェクト間の作用は「メッセージ」という考え方によって行われる。 この相互作用は設計の段階では、太郎やら花子みたいな具体的なオブジェクトではなく、Personといった抽象的なレベルで考える。 ここで、Personをうんこの国の国民とする。 うんこの国にはうんこの王様がいて、国民にうんこしろ、と命令できる。 この命令(メッセージ)を国民に伝えるには、王様が国民のputOutUnkoを呼び出せばいい。
- 954 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:04:49 ]
- と、その前に、王様と国民の関係を明確にしないといけない。
ここでは、王様は国民を管理する立場とする。国民は王様に管理される立場。 だから王様と国民は 1 : n の関係になる。 以上のことをC++として実装するとこうなる。 class King { public: // うんこ命令関数 void orderUnko(string& name) { map<string, Person>::iterator ite = kokumin.find(name); // 国民を名前で探す if( ite != kokumin.end() ) { // 探している国民が見つかったら ite->second.putOutUnko(); // うんこをしてもらう(国民への愛のメッセージ) } } private: map<string, Person> kokumin; // 国民を名前で管理する };
- 955 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:18:59 ]
- Kingクラスのメンバ関数はstaticにはしないんだろうか
テンプレートってやつだろうか、まだやってないんだがなんとなくわかったかもしれない しかしite->second.putOutUnko();のsecondってなんだろう iteに見つかった国民の名前が格納されているとしたらsecondにはその国民nオブジェクト名が入ってるのか・・? んなわけないよなぁorz
- 956 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:19:28 ]
- >779
errata に載ってたべ。 www.aristeia.com/BookErrata/ec++3e-errata_frames.html
- 957 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:27:09 ]
- >>955
mapのイテレータの firstはstring(ここでは国民の名前)、 secondはPerson(国民オブジェクト) をそれぞれ示している first second ┌─┬───┬──────┐ │1│ "太郎"│ Person taro; │ 2 "花子" | Person hanako;| 罫線ずれまくり、マンドクセ Kingのメンバ関数orderUnkoはstaticにしない 具体的な王様が存在するわけだから King ore; ore.orderUnko("sakura"); とかやって、さくらたんに排泄を強要したりしてハァハァ
- 958 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:30:02 ]
- あ、なるほど
mapとやらに識別子(国民名)と該当オブジェクトへのポインタかなんかを宣言する時に格納していくのか Kingのメンバ関数からPersonのメンバ関数が呼び出せるのは、普通だよな なるほどさんくす、最初にテンプレートの方をやってくることにするぜ、助かりました
- 959 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:36:24 ]
- 横から失礼、そのKingを複数宣言する必要がある場面でどういった場面なんでしょうか?
- 960 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:50:59 ]
- 今回の場合は、ある特定のうんこの国に着目したから、Kingオブジェクトは1つしか登場しない。
でも、視点を変えて、国がたくさんある場合は話が違ってくる。 うんこの国が複数存在して、首脳会議とかやると、国の数だけ王様にご登場いただかなければならない まぁ、ここらへんは実際の分析対象の事情による。 プログラムってのは目的があって存在するわけだから、その目的に沿ったように分析しなきゃいけない。 分析の話ついでに、 分析対象は視点によって認識のされ方が変化していくってのを忘れないで。 今回は王様と国民の関係に限定して分析したけど、 王様の家族からすれば、王様は父親だったり夫だったりするわけ。 だから、分析するときには、どういう視点で分析しなきゃいけないのかをまず決めとかなきゃいけない。 今のケースだと、王様と国民の関係って視点で分析したけど、 首脳会議なんか出てきて、国家間の視点に移行したわけだよ。これはこれで、話が違ってくるよね。 「視点が変わった」ってところを強く意識するのを忘れないでね、って話。
- 961 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:54:28 ]
- なるほど、map<int,string,Person>とかにして国を識別するわけではないんですね、ありがとうございました。
- 962 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:01:49 ]
- いや、そのnは要らない。
仮に、float型の変数fに必要だと言うのならfloat f = float(atof(str))でいい。 勿論、float f = atof(str)だけでも構わないし、float f = static_cast<float>(atof(str))としても構わないが。
|

|