1 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 21:36:23 ] エスケープシーケンスやWin32APIなどの環境依存な物でもOK。 ただしその場合、質問者は必ず、環境を書きましょう。 ※sageは禁止です。 【前スレ】 【初心者歓迎】C/C++室 Ver.34【環境依存OK】 pc10.2ch.net/test/read.cgi/tech/1169039760/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
549 名前:547 続き [2007/03/17(土) 08:24:17 ] 一応結果はこう↓なんで間違いではないと思うんだが ################################################## Type something surrounded by '" "': "characters" characters Press any key to continue . . . ################################################## 他にもっとスマートな方法がある気がしてならんのだがどうでしょう?
550 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 11:12:30 ] >>549 intの配列にする必要は無いだろうというのが、>548の主張だ。
551 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 11:14:12 ] つーか、charArrayがintってなんだよ、問題の趣旨に合ってないじゃん。
552 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 11:15:11 ] なんだかなぁ、先ずは日本語と英語の勉強をし直すところから始める必要がありそうだ。
553 名前:デフォルトの名無しさん [2007/03/17(土) 11:30:08 ] >>550-551 それも引っ掛かってたんだよ。 だから、ここで質問してるわけなんだけど。 てか、このテキストに載ってる方法だとそれが唯一の方法に見えるんだ。 で、肝心のchar charArray[SIZE]と宣言した場合はどうやればいいの?
554 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 11:58:52 ] >>543 Boost.Serializationは設定ファイルくらいならそう面倒なく使えると思う。
555 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 12:03:53 ] >それが唯一の方法に見える 詳しく
556 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 12:17:27 ] WindowsベッタリならMSXML使えばいいんでないの。
557 名前:デフォルトの名無しさん [2007/03/17(土) 12:39:52 ] >>555 書いた通りそのまんまだが 今読んでるテキスト"C++ How To Program"には 区切り文字を指定して文字を読み込む方法はこれだけしか載ってない。 だから、intで宣言してるのはおかしいけどあれを使うしかなかった。 結果的には一応正しい出力になってる、でもなんか引っ掛かる。 俺的には「"」が見つかったときは読み込まずにスキップして後は全部読み込む、 みたいなアルゴリズムが浮かんでる。 そ・こ・で、ここの住人の力が必要なんだが…。
558 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 12:43:59 ] >>557 > でもなんか引っ掛かる それを説明しないと質問が成り立たないだろう。 エスパー募集なら他所でやれ。
559 名前:デフォルトの名無しさん [2007/03/17(土) 12:55:42 ] >>558 じゃ、箇条書きで。(というか、こんな説明しなくても回答できるはずだが…) @文字列をcharArrayという文字列配列に入れろ、という指示があるのにintで宣言している A例えば、この入力が"character"ではなく""cha"r""ac"ter"みたいに「"」が任意の数で入ってる場合でも きちんと読めるべきでは、と思っている(←確かに指示には書いてないが気になる) という二点です。 そろそろ回答の方をよろしくお願いしますよ。
560 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:02:36 ] 1. intで宣言しなきゃいいじゃん 2. 1文字ずつサーチすりゃいいじゃん
561 名前:デフォルトの名無しさん [2007/03/17(土) 13:05:10 ] >>560 それを具体的に教えてください、どの関数を使うかなどでいいですから。
562 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:14:15 ] >>561 最初からそれを聞けばよかったのに
563 名前:デフォルトの名無しさん [2007/03/17(土) 13:16:53 ] >>562 いやいや、最初からそう聞いてます。 つらつらと説明してきましたけど >>547 の問題読んだだけで「俺ならこうやるな」って 回答がくれば即解決のはずなんですが…。
564 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:19:46 ] >>561 てーか、何か根本的に間違ってないかい? 標準入力からcharArrayに入れるんだろ? なら char charArray[SIZE]; と宣言して cin.getline(charArray, SIZE); とするべきだろ。 (詳しい仕様は忘れたので終端文字については考えてない) そして「そこ」から引用符を取り除くという話なんじゃないの? >>547 のコードじゃ何がしたいのかイマイチ分からん。
565 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:21:53 ] >>563 プログラム書いて欲しいなら最初からそういえば言えばいいのに。 宿題スレあたりで頼めばいいんじゃね?
566 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:23:36 ] あとさ、お前の話が理解してもらえないのは、 決して周りの人間の理解力や洞察力が足りないからじゃない、 お前に説明能力が足りないからだよ。 そこんとこ分かっていないと損するよ。他の誰でもないお前が。 多分お前よりは(無駄に)長く生きてきた俺からの真面目な忠告。
567 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:23:53 ] pc11.2ch.net/test/read.cgi/tech/1172981618/ こっちでやれ。
568 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:27:05 ] >>556 iniに比べてXMLは面倒だよ。 世間でXMLが騒がれているとかiniが推奨されていないとかで わざわざ面倒な方法で実装するようにしなければいけないなんて納得いかない。 一つ一つNodeを辿るのではなく1つのXPathで指定したり 自分でサブルーチン作ったりして何とかするけど みんなどうしてんのか? このパラメタがなかったらエラーだが このパラメタがなかったらデフォルト知を使うとか ころころ追加や削除も容易であってほしいところだし。 MSXMLはBSTRやvariant型でATLテンプレートがなかったら地獄だぜ って感じている。
569 名前:デフォルトの名無しさん [2007/03/17(土) 13:27:07 ] >>564 そこまでは思いついたんですよ。 でも、さっきも書いた通り、 このテキストには指定した区切り文字だけ取り除く方法が while ((charArray = cin.get()) != '\"') { cout.put(charArray); } しか載ってないんですよ。 だからbuffer[SIZE]と組み合わせたんです。 で、その方法だと肝心の二重引用符はどのようにして取り除くんですか?
570 名前:デフォルトの名無しさん [2007/03/17(土) 13:28:11 ] >>565 ここまで時間かけたんですからここでお願いしますよ。 もう五時間ですよ?
571 名前:デフォルトの名無しさん [2007/03/17(土) 13:29:22 ] 以前、宿題スレに質問したら 「え、自分でテキスト読んでやってんの?なら宿題じゃないじゃん」って書かれた経験あり。
572 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:33:27 ] >>569 なんでテキストに載ってる方法しか使っちゃいけないの?
573 名前:デフォルトの名無しさん [2007/03/17(土) 13:34:26 ] >>572 他の方法を知らないからですよ
574 名前:デフォルトの名無しさん [2007/03/17(土) 13:36:31 ] これって面白いですか?
575 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:36:39 ] じゃあそのテキストを窓から投げ捨てて、 もっとまともなのを探せばいいだろうに。
576 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:37:16 ] >>571 そりゃ、普通は勉強のためにテキスト読んでるんなら、 人にコード書いてもらおうなんてのは本末転倒だからな。
577 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:37:55 ] >>573 自分で調べろよカス。
578 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:38:59 ] >>574 いや。割と迷惑。
579 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:39:20 ] >>577 それこのスレの意義を否定してるぞ
580 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:39:20 ] もういいよ、ストリームとか全部忘れてループ回せ。 int counter=0; char output[SIZE]; for(int i=0; i<SIZE; i++) if(charArray[i]!='\"') output[counter++]=charArray[i]; これで解決。
581 名前:デフォルトの名無しさん [2007/03/17(土) 13:39:23 ] 五時間かけた結果がこれですか…いいですよ、因果応報って言葉をお忘れなく
582 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:39:55 ] >>573 がんばれ! 途中参加の俺には何が何だかさっぱりわからないけどさ
583 名前:デフォルトの名無しさん [2007/03/17(土) 13:41:18 ] あらあら、>>581 の三秒前に回答が。 >>580 さん、どうもありがとうございますです。 それなら確かにできそうです。
584 名前:デフォルトの名無しさん [2007/03/17(土) 13:42:25 ] >>577 死ね、マジで死ね おまいなんか生きる資格ねぇよカス
585 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:44:09 ] >>584 だれが書いたか知らないけどそんなこというなよ
586 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:44:34 ] >>579 「調べる=人に聞く」だとでも思ってるの?
587 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:45:19 ] だから、>547の問題の文章をちゃんと理解するところから始めなきゃダメだって。
588 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:45:54 ] >>586 >>547 は自分でコード書いてどうですかって聞いてるんだから それから調べるキーワードくらい教えてやってもよかったんじゃないか?
589 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:46:35 ] >>587 原文もついてる訳だから読めなかった回答者が悪い
590 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:46:48 ] こっちは宿題スレじゃないし、それが妥当だったかもねー
591 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:47:26 ] >>590 それなら早く言ってあげればよかったのによくもまあネチネチと
592 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:48:13 ] あらあら、今日も釣り大会ですか?釣果はどうでしたか?w
593 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:48:13 ] いや俺途中参加だし、そんなこと言われても困る
594 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:48:49 ] 五時間もよく粘ったな
595 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:50:50 ] >>583 よかったね
596 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:51:26 ] >>588 そうは言っても元のコードが iostream 使ってるんだから そこから調べたらいくらでも情報が出てくるはずだろ。 模範解答らしい >580 にはキーワードを足す必要があるものは 一個も無いし。その後の流れを見ても質問者がとんでもなく アホだったとしか考えられない。
597 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:53:25 ] >>596 じゃ、そのiostream使ってるんだから、のくだりを書いてやれよ 自分が初心者だった頃は泣きついてたくせに
598 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:55:27 ] >>596 そのいくらでも情報が出てくるから困るんだろが 電話帳渡されて583-1723見つけろって言われて見つけられるかおまえ? お前が言ってるのはそういうこと
599 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:56:36 ] iostreamってテンプレート使ってるから初心者には少々取っつきづらい まぁいきなり全部理解しようとせずに少しずつ順番に使うようにすると 勝手に手が動くようになってるけど
600 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:57:16 ] >>597 「くだり」って、「〜調べたらいくらでも情報が出てくるはずだろ」って書けばよかったのか? 言ってることは >577 と同じなんだが。
601 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:58:59 ] >>598 電話帳は番号で検索できないが Web はキーワードで検索できる。全然違うな。
602 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:59:10 ] 途中参加です。 本のコピペでプログラムを作ろうとしているのか。 俺はiostreamに詳しくないのだ。 質問者が何処まで知っていて何を知らないのか判らないから 回答が難しいよね。 まだ5時間しかやってないのか。 これにこりずに続けろよ。
603 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:01:30 ] こんなところでもいじめやってんだから日本のいじめは根深いね
604 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:02:32 ] ま、いじめた側はどうせいつか同じ目に遭うよ ほっとけ
605 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:04:13 ] これは本当にひどい
606 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:05:37 ] もっとふざけた奴なら釣ってもいいだろうけどあんなマジメなのはやめとけよ
607 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:06:43 ] 俺からも>>586 が氏ぬように呪っとくわ
608 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:07:31 ] 560 から 580 が導き出せないのは異常。
609 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:34:42 ] 読ませてもらった 俺からは>>586 は無事なんだが >>586 の子供がいじめられて自殺するように呪っとくわ それくらい悪質だな
610 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:57:19 ] 586は少なくとも2chの中ではごく普通のことだと思うが
611 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 15:12:51 ] 俺一応真面目に答えた側なんだけど。 なんつーか、行き詰まっているのに妙に自信過剰というか、 変な意地が見え隠れするのが気になった。 真面目なのは確かなんだろうけど、それは必ずしも 皆から受け容れられるということを保証してはくれないわけでさ。 自分も相手も匿名のこの場でこういう経験しておけたのは 長い目で見ればプラスなんじゃないのかなぁと思ってみたり。
612 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 15:20:01 ] 根拠のないプライド持った能無しほど困った存在もないからな。
613 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 15:40:57 ] たまたま俺みたいなやさしい人がいなかったときに書き込んだのが 運が悪かっただけだよ。 2ちゃんねるが@IT会議室みたいにはなって欲しくない。
614 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:14:05 ] つーか、そもそも>547の原文の下の訳が滅茶苦茶なわけで。
615 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:30:08 ] ん?そうか?どこが?
616 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:46:26 ] つーかお前らよくこんな下らないことでスレ引っ張るな。 そんなに暇なのか? >>547 なら、こんなもんでいいだろ。 #include <iostream> int main() { int i, c; char charArray[51]; std::streambuf *sb = std::cin.rdbuf(); if ((c = sb->sbumpc()) != '"') return 1; for (i = 0; i < 50 && (c = sb->sbumpc()) >= 0 && c != '"'; ) charArray[i++] = static_cast<char>(c); charArray[i++] = '\n'; std::cout.rdbuf()->sputn(charArray, i); return 0; }
617 名前:デフォルトの名無しさん [2007/03/17(土) 16:54:16 ] >>603 からの自作自演が酷すぎてワロタ C初心者は歓迎だがネット初心者や2ch初心者は帰れ
618 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:01:26 ] C版 #include <stdio.h> int main() { char charArray[51]; if (scanf("\"%50[^\"]\"", charArray) != 1) return 1; puts(charArray); return 0; }
619 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:17:29 ] >>616 と>>618 見るまで入力テキスト内の"を全て取れって問題だと思ってた 最初と最後にしか出てこないんだな
620 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:19:39 ] >>619 Read a string of the form "characters"
621 名前:デフォルトの名無しさん [2007/03/17(土) 17:54:39 ] 今Linuxで動くアプリケーション(なんて大げさなものでもないですが)を作っています。 一般的なC++におけるDebugビルド用のマクロって何か決まっていますか? _DEBUGってのは Visual C++用みたいですが・・・ 自分で勝手にマクロ決めていいもんなんですかねえ
622 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:56:24 ] アンダースコアで始まらない名前なら何でもおk
623 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:57:32 ] 逆に、assert.hではNDEBUGを利用している。 まぁ無難に、DEBUGで委員ジャマイカ。
624 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 18:21:13 ] >>621 リリースビルド時に NDEBUG 定義するから NDEBUG 定義されてないときがデバッグビルド。
625 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 20:07:57 ] それってただ多くのコンパイラで採用されてるだけ? それとも規格で決まってるの?
626 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 21:00:44 ] 623は規格で定まっている事項。
627 名前:625 mailto:sage [2007/03/17(土) 22:01:11 ] ありがとう! どんな環境でも安心して使えるんだね。
628 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:06:17 ] 規格を守っていないシステムが存在しないという証明はできないから どんな環境でも安心して使えるということにはならん
629 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:18:41 ] そんなときは assert.h を自作すればよし。簡単だよ。
630 名前:デフォルトの名無しさん [2007/03/18(日) 00:25:28 ] Visual Studio2005 C++で 読み込んだり計算したりして出した 正の整数値分の配列を宣言したいのですが 取り方がわからないので教えていただきたいです unsigned int a; char buf[10] = "231"; a = atoi( buf ); こんな感じで a を取っていたとき a の大きさ分だけもった b 配列をつくることってできないでしょうか? /*--------------------- const unsigned int c = 231; int d[c]; -----------------------*/ 気分的に(笑)上の様な感じで int b[a]; と宣言してしまうと 定数式が必要です。 とか サイズが 0 の配列を割り当てまたは宣言しようとしました。 とか 'b' : サイズが不明です。 とか怒られてしまいます・・・
631 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:38:02 ] const unsigned int c = 231; int *d = malloc(c); こんなかんじ?
632 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:42:17 ] C++ って言ってるから new じゃね? int* b = new int[a]; 使い終わったら delete b[];
633 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:43:05 ] delete[] b でしょうがぁぁぁあああ!!!
634 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:44:07 ] ごめんなさい>< boost::shared_ptr しか使ってないからもう忘れました><
635 名前:630 mailto:sage [2007/03/18(日) 00:54:35 ] こんな早くレスもらえるとは! ありがとうございます
636 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:18:40 ] >>634 配列に shared_ptr は使えないんじゃね?
637 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:19:43 ] vectorでいいじゃん。
638 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:22:09 ] >>636 shared_array があるじゃん
639 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 06:54:25 ] >>634 たぶんこんな感じ namespace bll = boost::lambda; boost::shared_ptr<int> hoge(new int[42], bll::bind(bll::delete_array, bll::_1));
640 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 08:00:39 ] 素直にshared_array使えよw
641 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 08:30:55 ] シャーベット・アーリーと読んでしまったorz ネヨ…
642 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 08:32:24 ] 寝る前に、 早くシャーベットを食べるんだ。
643 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:34:06 ] 虫歯に注意
644 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 23:56:17 ] 引数がvectorでも組み込みの配列でも動作する、平均値を返す関数を書くべく、 引数を反復子(ポインタ)にして template<class Ran> double average(const Ran& begin, const Ran& end){ (略) } と定義したのですが、関数呼び出し部分で double av_arr[] = {10, 20, 30, 10}; size_t av_arr_size = sizeof(av_arr) / sizeof(*av_arr); double x = average(av_arr, av_arr + av_arr_size); としたところ、 「テンプレート のパラメータ 'Ran' があいまいです。 'double *' の可能性があります。または 'double [4]'」 とコンパイラ(VC2005)にダメ出しされてしまいます。 average(av_arr + 0, av_arr + av_arr_size); とすれば共にポインタとして認識してくれるようですが、 読んだ本には、「配列の名前を添え字なしで使うと配列の先頭のポインタが渡される」と書いていたので、 元のままだと何が悪いのかよくわかりません。 "double [4]"って何の型?? みたいな話もあるんですが、 解説とスマートな解決策をご教授願えれば幸いです。
645 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:04:28 ] >>644 double av_arr[4]; 確かに av_arr と &av_arr[0] は、 同じ値になるけど 型としては別のものだよ。 ちょっとややこしいね。
646 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:07:06 ] >>644 template<class Ran> double average(Ran begin, Ran end); エラーメッセージによると、 double average<double*>(double* const& begin, double* const& end); double average<double [4]>(double const (&begin)[4], double const (&end)[4]); のどちらか決めかねるようだけど、1つめの引数がどっちでも マッチしてしまうからエラーになるんだと思う。 テンプレート引数の推測時には配列はまだ配列のまま。 読んだ本は C の本か、 C++ でも入門書あたりだろう。
647 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:10:12 ] >>644 double av_arr[] = {10, 20, 30, 10}; において、av_arrは、'double [4]'という型ですよ。 もしav_arrが'double *'という型だと size_t av_arr_size = sizeof(av_arr) / sizeof(*av_arr); は、sizeof(double *) / sizeof(double); になっちゃうよ。
648 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:31:57 ] >>645-647 さん ご丁寧な解説、痛み入ります。 おかげさまで、理解に至りました。ありがとうございます。 お察しの通り、読んでいるのはC++の入門書ですね、はい。 精進いたします。
649 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 01:13:27 ] vc8で、スタック上に複数のオブジェクトを作ったとき デストラクタは作った順とは逆の順番で呼び出されるようですが これに依存するような、オブジェクト間の依存関係を作ったりしてもOKなんでしょうか?