- 1 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 09:10:30 ]
- エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.39【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1182740506/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 792 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:35:03 ]
- Base * b = new Dev[10];
for( int i = 0; i < 10; ++i ){ b[i].Test(); } こうですた
- 793 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:40:53 ]
- 配列をポリモルフィックに扱ってはいけない
それをやりたいならポインタの配列とかでやるべき
- 794 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:49:00 ]
- boost::scoped_array<Base> b( new Dev[10] );
for( int i = 0; i < 10; ++i ){ b[i].Test(); } ならおk?
- 795 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:49:38 ]
- >>793
そうなんですか? ポインタの配列というと、下のような感じでいいんでしょうか? Base **b = new Dev*[10]; for( int i = 0; i < 10; ++i ){ b[i] = new Dev(); b[i].Test(); }
- 796 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:53:33 ]
- >Base **b = new Dev*[10];
これコンパイル通らないだろ。
- 797 名前:793 mailto:sage [2007/08/03(金) 23:55:00 ]
- >>795 ソースはMore Effective C++の第三項。ぜひ一読を
- 798 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:56:31 ]
- >>794 同じこと。
- 799 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:57:42 ]
- >>795
ねたじゃn
- 800 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:59:41 ]
- >>796
Base **b = new Base*[10]; はいけましたが Base **b = new Dev*[10]; はダメみたいです
- 801 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:12:01 ]
- ポインタの配列調べてきました、こんなんでいいんですか?
malloc久しぶりに使いますた Base **b = (Base**)malloc(10 * sizeof(Dev*)); for( int i = 0; i < 10; ++i ){ b[i] = (Dev*)malloc(10 * sizeof(Dev)); b[i].Test(); }
- 802 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:13:52 ]
- >>801
Base やら Dev やらは構造体なの?
- 803 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:14:46 ]
- >>802
>>787のやつです
- 804 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:16:00 ]
- mallocじゃコンストラクタが走らないだろう・・
Devを指すBase*の配列を作ればいいと思うよ、多分
- 805 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:27:19 ]
- こうか?
typedef Base* PBase; std::size_t n = 10; PBase** b = new PBase[n]; for (std::size_t i = 0; i < n; ++i) { b[i] = new Dev; b[i]->Test(); } いい加減boost::ptr_vector使えとか言いたい。
- 806 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:28:11 ]
- ptr_vectorはalgorithmが使えないから・・・
- 807 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:33:47 ]
- >>806
boost::indirect_iteratorでなんとかなる話?
- 808 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:39:59 ]
- 違う、アルゴリズム体操の話。
- 809 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:42:20 ]
- >>807
くやしく
- 810 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:42:59 ]
- なんだあほか
- 811 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:49:08 ]
- >>809
www.boost.org/libs/iterator/doc/indirect_iterator.html#example value_typeがT*(一般に*演算子が使える型)なイテレータをラップして value_typeがTであるイテレータにするアダプタ。
- 812 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:55:04 ]
- >>805さんの方法で上手くいきました、ありがとうございます
- 813 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 02:58:29 ]
- こういうこんがらかるようなソースは嫌い
- 814 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 03:03:32 ]
- こんがりコーン
- 815 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 03:04:27 ]
- 普通に一個一個newすればいいのに
- 816 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 03:12:07 ]
- newが現れた。newが現れた。・・・おや?new達の揚子江が・・・・・!?
- 817 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 03:22:39 ]
- 兆候って言えよ
- 818 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:30:45 ]
- template <typename T> void f( typename boost::call_traits<T>::param_type x);
みたいな定義で type x; f(x); のようにして使いたいんですが(要はf<type>(x)とかするのがめどい) 何か良いアイデアありませんか?
- 819 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:53:48 ]
- template <typename T> void f(T x)ならそのままf(x)できるけどboost::call_traitsってなんだっけ?
- 820 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:54:11 ]
- f(x)で呼べるだろ。
- 821 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:55:27 ]
- >>819
boost::call_traits<T>::param_typeは、 引数がクラス型ならconst T&、組込型ならTというように、引数に最適の型になる。
- 822 名前:819 mailto:sage [2007/08/04(土) 12:56:31 ]
- >>821
だったら>820。
- 823 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:14:08 ]
- 普通に考えればそうなるはずなんですが、結果は
#include <boost/call_traits.hpp> template <typename T> void f(typename boost::call_traits<T>::param_type) {} int main() { int x; f(x); } error C2783: 'void f(boost::call_traits<T>::param_type)' : テンプレート 引数を 'T' に対して減少できませんでした 'f' の宣言を確認してください。 oops。。。
- 824 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:24:07 ]
- コンパイラは何?
vc6だとboostの一部は使えないよ。
- 825 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:40:31 ]
- 工工工工工工エエエエエエ(´д`)エエエエエエ工工工工工工
- 826 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:42:43 ]
- VC8です
あとGCC3.4でも試してみたが駄目ですた 型推論が上手く行かない為だと思うんですが、これはバグなのか 言語仕様上の限界なのかよくわかりません
- 827 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 14:14:16 ]
- 2.5 というのをファイルから読み込んだんですが、これを小数(Float)に変換するには
どうすればいいんでしょうか?
- 828 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 14:17:26 ]
- ↑質問をちょっと訂正です
変換する上で便利な関数はありますか? atoiか何かで1文字づつ変換して入れてくしかないんでしょうか?
- 829 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 14:28:47 ]
- atof(), strtod()
- 830 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 14:29:03 ]
- ありゃまatofなんて関数があったんですね
解決しました
- 831 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 14:42:03 ]
- あとふ
- 832 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 14:46:03 ]
- acof
- 833 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:51:54 ]
- >>826
ググったら上のほうにこんなのがあった。 lists.boost.org/Archives/boost/2005/09/94177.php どうやらC++の仕様らしい。
- 834 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:17:57 ]
- 関数ブロック内で定義した関数って、
外部リンケージと内部リンケージどっちなんですか? 関数はstatic以外、外部リンケージつう説明を読むと外部リンケージですけど、 別のファイルから使うことなんて出来ないですよね? てか、リンケージの説明が微妙によくわかりません。 なんか良い説明してるページってありますか。
- 835 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:46:56 ]
- warning: ISO C forbids nested functions
- 836 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:58:55 ]
- >>835
ああ・・・ああ・・・・なんてこったい。 で、入れ子関数はGCCだと内部リンケージになるらしいですね。
- 837 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 21:23:18 ]
- void hoge() {
struct nested_fn { void foo() { /* valid nested function */ } }; }
- 838 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:18:04 ]
- ちょっと組込み系で
簡単なGUI作っているのですが GUI部分とメインロジックを接続するイベントモデルを 設計しているのですが、最近のトレンドだとどんな 感じで実装してるのですか? 関数ポインタ方式 シグナル-スロット方式 ターゲット/メッセージ方式 とかなのかな? あと実際に実装してみようと思うと何かうまい資料とか あると助かるのですが、みなさんは実装しようとしたとき 何を参考に実装しているの?
- 839 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 04:49:13 ]
- XMLResourceかね、XULみたいな
でも組み込みじゃ無理か
- 840 名前:デフォルトの名無しさん [2007/08/05(日) 05:08:02 ]
- C++でSingletonなClassを実装したいのですが、staticを使う方法しか思いつきません。
出来ればstaticを使用せずに実現したいのですが可能でしょうか。 具体的なコードや、参考HPのURLを示していただけると助かります。 よろしくお願いします。
- 841 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 05:22:37 ]
- static 使わずに Singleton なんて無謀
- 842 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 05:25:15 ]
- extern
- 843 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 05:27:56 ]
- なんでstaticを使いたくないんだろうか?
- 844 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 05:30:46 ]
- インスタンス取得関数を friend 関数で作り、
そのインスタンスへのポインタをグローバルに置く、 くらいが限界か。 全く意味がないけど。
- 845 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:05:06 ]
- ファクトリ用のクラスを作ってそこでインスタンスを管理するとか。
もっともファクトリにstaticが必要になるような気もするけどw
- 846 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 08:34:24 ]
- C++以外の言語でもstatic相当のものを使わないと無理だよな。
- 847 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:25:28 ]
- うまく説明できないんですが、BCBで何も考えずに__closure使ってます。
これを使わない場合、どう書けばいいですか?エスパーさんよろしこ
- 848 名前:エスパー mailto:sage [2007/08/05(日) 09:27:07 ]
- 死ね
- 849 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:36:20 ]
- 説明できないならソースで説明してくれ
- 850 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:38:27 ]
- しょうゅdeも11お
- 851 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:58:55 ]
- delete x,y,z;
はOKなのに、配列に対する delete [] x,y,z; で、うまくいかない理由を教えてください。 一文で各方法はないでしょうか?
- 852 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:04:14 ]
- >>851
delete x,y,z;も全然良くない。 deleteとdelete[]演算子は1つしか演算対象を取らない。 また、カンマ演算子は最低の優先順位なので、こうは書ける。 delete x, delete y, delete z; delete[] x, delete[] y, delete[] z; 1行に複数文を並べるのと大して変わりはないが。
- 853 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:07:54 ]
- マクロ
- 854 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:08:33 ]
- 配列と通常のやつのdeleteが異なるってことが気にくわねぇなら
プリプロセッサとmplを組み合わせて、delete_(x, y, z,...);みたいな物作ろうぜ 既に誰かが作ってるかもしれないが
- 855 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:11:44 ]
- そもそも配列new[]は使わないし、
deleteも生で使うのはダサい。
- 856 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:11:57 ]
- 初心者なんですが、fopenってファイルを開くだけでメモリに乗せるわけではないですよね?
ちょっと疑問に思っていまして・・・
- 857 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:14:13 ]
- >>855
じゃあどうするの?
- 858 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:14:28 ]
- 裏でバッファリングを始めている可能性はあるが、
気にするようなことではない。
- 859 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:15:49 ]
- 生ポだろがスマポだろうがお構い無しに意味上での構築破壊が出来る構文が必要ということか
- 860 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:16:11 ]
- >>857
new[]→std::vectorあるいはもっと低水準のメモリ確保ルーチンへの二極化。 delete→boost::scoped_ptr, boost::shared_ptr
- 861 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:17:06 ]
- >>860
そもそも世の中boost使えない場合が多いの そんな限定していいの?
- 862 名前:858 mailto:sage [2007/08/05(日) 10:19:13 ]
- >>858
うーん、TB級のファイルをfopenで開くことって出来ますかね・・・
- 863 名前:856(訂正) mailto:sage [2007/08/05(日) 10:20:32 ]
- >>858
間違えましたorz
- 864 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:23:08 ]
- ほほえましいな
- 865 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:28:06 ]
- >>840
ソフトウェアの立ち上げを早くするために 遅延ロードみたいなことをしたいってこと?
- 866 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:30:08 ]
- はい
- 867 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:22:59 ]
- >>861
生を安全なものにするには、ラップするか、使い方に厳密な決まりを作る、しか無いよ。 本質的には。 既存の膜がないなら、できる範囲で自作するのが一番いいと思うけど。
- 868 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:57:29 ]
- boost::shared_ptr
自分で実装するのめんどい誰か実装して。
- 869 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:59:06 ]
- すでに実装済み
- 870 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:59:44 ]
- めんどいから誰かが実装してくれたのが boost じゃないの
- 871 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:35:04 ]
- あんなでかいライブラリ使いたくねー
他いらねーしshared_ptrだけ実装してくれよ
- 872 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:58:41 ]
- 既に実装済み
- 873 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:01:09 ]
- じゃあフリーで使える単体のshared_ptrだけ作ってくれよ
- 874 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:06:18 ]
- >>873
boostからshared_ptrだけコピペして使えよ
- 875 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:06:46 ]
- 既存
- 876 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:17:52 ]
- テンプレートライブラリがどういうものか分かってないんじゃね
- 877 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:50:05 ]
- boostのshared_ptrもいろいろincludeしてたりして、
依存性を調べるのが面倒くさいからなー。 shared_ptr.hppひとつコピペしたら済む話じゃないでそ?
- 878 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:51:25 ]
- >>868
std::tr1::shared_ptr libstdc++くらいしかまだ実装していないと思うけど。
- 879 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:53:04 ]
- >>860
こういう流れになるから std::auto_ptr も挙げるようにしようぜ。
- 880 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:03:11 ]
- >>879
auto_ptrを挙げるならばその罠や制限についても説明しなければならないだろ 単純なshared_ptrまがいなら色々見たことがあるし そもそも基本的な原理は単純そのものだが とうぜんそれらはshared_ptrほど注意深く実装はされていない >>877 プリプロセッサに食わせて出力をgrepするだけの話だが そもそも取り込むファイルが環境依存だからな
- 881 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:10:22 ]
- >>880
> auto_ptrを挙げるならばその罠や制限についても説明しなければならないだろ shared_ptr を並べて挙げとけば十分だよ。 罠や制限があっても share_ptr よりコストは低いし標準だし、 単純な例外安全目的にはぴったりだ。
- 882 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:32:32 ]
- コンテナに突っ込めない出来損ないのスマポが標準だ?笑わせてくれる
- 883 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:39:05 ]
- 誰が笑おうがコンテナに突っ込めなかろうが、標準は標準。
単純な delete 強制のためだけに boost が要るなんて言われても 面倒なんだよ。
- 884 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:40:43 ]
- 笑うのはいいこと、もっと笑おう
- 885 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:48:59 ]
- >>882
コンテナに突っ込めるスマポが標準にないところも笑いどころ。
- 886 名前:デフォルトの名無しさん [2007/08/05(日) 17:08:20 ]
- 今、ある数学のプログラムをネット上で見つけたので、
それをコンパイルすることを試みているのですが、 エラーがいっぱい出て、うまいごとにコンパイルできません。 Borland社のbcc32というのを使ってます。 そのソースはこちらのウェブサイトに全部載ってます。 www.math.temple.edu/~wds/homepage/steiner-code.c それから、コマンドプロンプトでコンパイルを試みた結果、 以下のようなエラーが出てきました。 そのエラーにあったようにデバッグを試みたが、 どこをどうデバッグすればいいかもわからなかったので、 どなたか分かる方がいれば本当に助かります。
- 887 名前:886 [2007/08/05(日) 17:09:16 ]
- C:\Documents and Settings\Math\デスクトップ\steiner code>bcc32 stei
ner-code.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland steiner-code.c: エラー E2219 steiner-code.c 39: マクロ 'RANDM' の呼び出しにおける引数の個数が誤 っている(関数 buildtree ) エラー E2188 steiner-code.c 39: 式の構文エラー(関数 buildtree ) エラー E2219 steiner-code.c 52: マクロ 'RANDM' の呼び出しにおける引数の個数が誤 っている(関数 buildtree ) エラー E2188 steiner-code.c 52: 式の構文エラー(関数 buildtree ) 警告 W8065 steiner-code.c 183: プロトタイプ宣言のない関数 'srand48' の呼び出し( 関数 main ) 警告 W8065 steiner-code.c 188: プロトタイプ宣言のない関数 'exit' の呼び出し(関数 main ) 警告 W8065 steiner-code.c 192: プロトタイプ宣言のない関数 'exit' の呼び出し(関数 main ) 警告 W8065 steiner-code.c 207: プロトタイプ宣言のない関数 'buildtree' の呼び出し (関数 main ) 警告 W8065 steiner-code.c 208: プロトタイプ宣言のない関数 'length' の呼び出し(関 数 main ) 警告 W8065 steiner-code.c 208: プロトタイプ宣言のない関数 'error' の呼び出し(関 数 main ) 警告 W8065 steiner-code.c 209: プロトタイプ宣言のない関数 'optimize' の呼び出し( 関数 main ) 警告 W8065 steiner-code.c 211: プロトタイプ宣言のない関数 'output_tree' の呼び出 し(関数 main )
- 888 名前:886 [2007/08/05(日) 17:10:32 ]
- 警告 W8065 steiner-code.c 212: プロトタイプ宣言のない関数 'exit' の呼び出し(関数
main ) エラー E2451 steiner-code.c 218: 未定義のシンボル HUGE(関数 main ) 警告 W8065 steiner-code.c 225: プロトタイプ宣言のない関数 'buildtree' の呼び出し (関数 main ) 警告 W8065 steiner-code.c 227: プロトタイプ宣言のない関数 'length' の呼び出し(関 数 main ) 警告 W8065 steiner-code.c 228: プロトタイプ宣言のない関数 'error' の呼び出し(関 数 main ) 警告 W8065 steiner-code.c 230: プロトタイプ宣言のない関数 'optimize' の呼び出し( 関数 main ) 警告 W8065 steiner-code.c 232: プロトタイプ宣言のない関数 'optimize' の呼び出し( 関数 main ) 警告 W8065 steiner-code.c 232: プロトタイプ宣言のない関数 'length' の呼び出し(関 数 main ) 警告 W8065 steiner-code.c 232: プロトタイプ宣言のない関数 'error' の呼び出し(関 数 main ) 警告 W8065 steiner-code.c 237: プロトタイプ宣言のない関数 'output_tree' の呼び出 し(関数 main ) *** 5 errors in Compile ***
- 889 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 17:22:28 ]
- >>886
上から順番につぶしていけば? 標準から大きくずれている&独自の書き方が多いでとても読解する気になれんw 取り合えずRANDMマクロは単に乱数欲しいだけみたいだからrand()にでも置き換えてみるとか?
- 890 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 17:24:05 ]
- 昔のソースなんだろ。
1989年と書いてあるな・・・
- 891 名前:886 [2007/08/05(日) 17:32:28 ]
- >>889
ありがとうございます。 RANDM()と書いているところをrand()に置き換えたらいいんでしょうか? >>890 だとしたら、最近のコンパイラではコンパイルできないということでしょうか? すみませんが、ご教授お願い致します。
- 892 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:00:10 ]
- 何の宿題かぐらいはちゃんと書けよ。
|

|