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


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

C++相談室 part78



1 名前:v(^・^)v mailto:sage [2010/02/13(土) 23:18:03 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part77
pc12.2ch.net/test/read.cgi/tech/1263556932/

696 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 07:26:55 ]
通らない
ttp://codepad.org/d4Wo3ozT

697 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 07:48:53 ]
void ** const cpp = static_cast<void **>(pp);
えっ?

698 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 07:49:47 ]
>>696
それは、規格の文面によって、明示的に禁止されている。
4.4 Qualification conversions [conv.qual]

なぜできないのかというと、それを用いることによって、const性に穴が生じるから。
規格のサンプルコードを、適当にコメントを補って引用すると、

int main() {
const char c = ’c’;
char* pc;
const char** pcc = &pc; // 仮に、これが許可されているとする
*pcc = &c;// ppcを介して、pcを変更している。
*pc = ’C’; // pcはconstでもないのに、constなはずのcを参照出来ているので、変更できる。
}

つまり、constなppcを介して、非constなpcを変更できてしまうので、
pcが、明示的なキャストもなしに、constなオブジェクトを参照することが可能になってしまう。

699 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 07:57:03 ]
>>698
規格の参照までしていただいて、ありがとうございます。
参考になります。

ということで、これを踏まえて改めて>>679

700 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 07:57:31 ]
ubuntu の gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu9)
環境で例外クラスの実装を見ようと思ったのですが
/usr/include/c++/4.4/stdexcept
に logic_error などの宣言はあるのに実装が書いてありません。
どのファイルを見たら良いでしょうか?

701 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 08:07:03 ]
const_castの話してるやつはコテ着けるか
婉曲表現と皮肉をやめて直接主張しろ
何人かいて訳が分からない

702 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 08:40:34 ]
はがす時は全はがしが楽じゃね?ってことが基点となっていると思うので

void const * const * const cpcpc = 0;
void ** pp = const_cast<>(cpcpc); // 全はがし
void const ** cpp = const_cast<void const**>(pp); // つける時は書く
// void const ** cpp = const_cast<void const**>(cpcpc); // 一部はがしのときもこれまで同様書ける

というのを望んでんのかも

703 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 09:06:33 ]
がんばれ
658 :デフォルトの名無しさん :2010/03/08(月) 07:36:01
const_cast ってconstはずしだから <> の中に型書くの無駄だなぁって思ってしまう。
const int* からconstとったら int* に決まってんじゃん、と。

704 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 14:09:06 ]
constの話で盛り上ってるからついでに聞きたいんだけど

struct X {
int *p;

void test(int x) const
{
*p = x;
}
};

こう書くとconst指定してるのにオブジェクトの内容が変化してる
これって合法なの?




705 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 14:14:13 ]
>>704
Xのオブジェクトはpであることを思い出せ。
pはint*型だから「int型の値のあるメモリの位置」を指している。
*p = xは「pの指している先のint型の値に対する副作用」であって「pに対する副作用」ではない。

706 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:34:24 ]
pは宝の地図
*pは宝の中身
Xのメンバはpつまり宝の地図
だからtest(int x) constとは宝の地図を書き換えちゃいけないってこと
*p = xは宝の中身を入れ替えているだけ

707 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:39:05 ]
中々面白い例え方をするな。

708 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:54:36 ]
**pは宝の地図の在り処を書いた地図か。判りやすいね。

709 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:57:01 ]
ゲームのお使いクエストだな。
そのお宝の例えは俺は結構好きだな。

710 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:19:18 ]
へー、いい表現じゃん

711 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:23:11 ]
サンクス
正常な動作だったのね

712 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 17:43:29 ]
new intは新しく宝を作るが、この式自体は新しく作られた宝のありかを示す地図を返す。
new int*は宝の地図を新しく作りその地図のありかを返す式だが、新しく作られた宝の地図には宝のありかは書いてない。
難しいな。

713 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:38:02 ]
new int*なんてあんの? あるなら知らなかった。

714 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:44:58 ]
型なら何でもnew出来るだろ



715 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:46:35 ]
関数型もできるっけ?
関数ポインタじゃなくて。

716 名前:706 mailto:sage [2010/03/09(火) 21:01:33 ]
何の気無しに書いたんで、反応あって驚いてる。
>>706は、一番最初にポインタを勉強する時に俺が(たまたま)イメージしたもので、
今にして思うと、地図という「質量を持った物体」でポインタを喩えたのが好都合だった気がする。
たまたまそういうイメージをしたお陰で、ポインタもまた「そういう値」である、って所で
まったく混乱せずに済んだ。>>708が言うように、ポインタのポインタも
「勇者は宝箱を開けた。なんと宝の地図を見つけた!」ということだと考えれば楽だったし。

717 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:24:46 ]
C++は勉強するほど自信がなくなっていくな・・・boostマジキチ

718 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 23:10:15 ]
>>716
初心者には分かりやすい言い例えだね。
俺もそれ使わせてもらいます。


719 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 23:24:34 ]
住所とか例えるより絶対わかりやすい。

720 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 23:30:25 ]
>「勇者は宝箱を開けた。なんと宝の地図を見つけた!」

あるあるw

721 名前:デフォルトの名無しさん [2010/03/09(火) 23:38:31 ]
ポインタを宝箱に例えるなら、中身の種類は開ける前から判っているんだが

722 名前:デフォルトの名無しさん [2010/03/09(火) 23:38:54 ]
s/宝箱/宝箱の地図/

723 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:06:18 ]
で?

724 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:35:08 ]
ヌルポインタはミミックだな
開けると死ぬ



725 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 01:44:47 ]
住所にたとえるのと変わらんと思うがね

726 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 01:46:21 ]
ていうか別に喩えなくても分かるから

727 名前:デフォルトの名無しさん [2010/03/10(水) 01:46:56 ]
ミミックは固定ボスだから、地図が読めない奴が初見殺しされるだけだろ

728 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 04:46:42 ]
minorという変数がプログラム中にありますが、
cstdlibをインクルードしたら以下のようなエラーが出るようになりました。

error: macro "minor" passed 2 arguments, but takes just 1

これは単純に、minorという変数名を使うな、という解釈でよいでしょうか?

729 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 04:58:04 ]
>>728
どう読んだらそんな解釈になるんだよ。

そのエラーが再現する最小ソースを作ってみれ。

730 名前:728 mailto:sage [2010/03/10(水) 05:25:53 ]
>>729
言葉足らずでした。

上記のエラーは、
ctdlib の中(もしくはcstdlibがインクルードしているファイルの中)に
引数を1つとるminorというマクロ(?)があるから、
引数が2つある自作クラスのオブジェクト名をminorにしてはいけない
ということでしょうか?

以下ソース

#include <cstdlib>

class Hoge
{
 public:
  Hoge( int i, int j ){ }
};


int main(int argc, char* argv[])
{
 Hoge minor(1,1);

 return 0;
}


731 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 05:36:58 ]
>>730
別に言葉足らずじゃない。>>729が寝ぼけてるだけ。
環境によってはsys/types.hにminorマクロがあるので使わない方がいい。

732 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 05:43:19 ]
>>731
ありがとうございます。

733 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 05:56:50 ]
>>730
手元の Cygwin g++ 4.3.4 では何事もなくコンパイルが通ったよ。

ちなみに >728 の環境(OS、コンパイラ、そのバージョン)は何?

734 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 06:01:57 ]
>>731
cstdlib のインクルードでユーザーが使える名前がマクロ定義されてるのは
コンパイラのバグ(標準違反)だと言ってしまっていいと思うんだけど、そういう
予防しとかないといけないものなの?どっかの環境での常識?



735 名前:728 mailto:sage [2010/03/10(水) 06:04:13 ]
>>733
Ubuntu 9.10
gcc version 4.4.1

です。

gcc -v の内容全部貼ると
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v
--with-pkgversion='Ubuntu 4.4.1-4ubuntu9'
--with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch
--enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4
--enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc
--enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic
--enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu
--target=i486-linux-gnu
Thread model: posix
gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu9)

736 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 06:14:04 ]
-std=c++98 とかすれば逃げれたりするんじゃないかなー。
まぁ #undef すりゃいいんだけどね。

737 名前:728 mailto:sage [2010/03/10(水) 06:35:01 ]
以下のソースコードコンパイルすると

#include <cstdlib>

void minor( int i, int j )
{
}

int main(int argc, char* argv[])
{
 return 0;
}


test.cpp:5:26: error: macro "minor" passed 2 arguments, but takes just 1
test.cpp:5: error: variable or field ‘minor’ declared void
test.cpp:5: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x

というerrorと、warningが出ます。
>>730のソースコードではwarning出ませんでした。

738 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 09:54:54 ]
functionってすげいな
ソース眺めるだけで勉強になる

739 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:43:07 ]
struct A;
struct B{A a;};
struct A{int a;};
int main(){return 0;}

前方宣言したら、後で定義してれば
使えると思ってたんですが
これがエラーになります
Bの中をA* aにするとエラーが消えるのですが
その辺に理由があるんでしょうか?

740 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:53:13 ]
ちょっと実験してみたところ、前方宣言って思ったほど強くない?んですね
Aのデータは定義されるまでは全く参照出来ないのか

struct A;
struct B{void f(A *a){}}; //セーフ
//struct B{void f(A& a){}}; //セーフ
//struct B{void f(A a){}}; //アウト
//struct B{void f(A& a){a.a;}}; //アウト
//struct B{void f(A* a){a->a;}}; //アウト
struct A{int a;};
int main(){return 0;}

741 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:01:37 ]
サイズがわかってるかどうかで判断できるよ

742 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:10:29 ]
なるほど、セーフなのはアドレスですもんね
ありがとうございました

743 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:23:35 ]
>>738
しかしそんなソースを仕事で書いたら
同僚に白い目で見られそうだww

744 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:40:04 ]
すみません
vectorのresizeでサイズを大きくした時に
拡張した結果メモリの再配置が起こったとすると
resizeする前のデータはコピーされるのでしょうか?



745 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:42:12 ]
ざれます

746 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:43:10 ]
>>744
www.fides.dti.ne.jp/~oka-t/cpplab-vector-new.html

747 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:43:18 ]
ありがとうございます><.

748 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 00:56:34 ]
クラスを使ってプログラミングする場合、main関数はどのように使用すればいいのでしょうか?

749 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 00:59:17 ]
普通に使用すればいいです

Javaみたいにどっかのクラスのstatic関数にする必要はなし、というか無理

750 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:51:16 ]
オペレータオーバーロードの ->* って、どう定義してどう使うんですか?
ググール先生に聞こうと思ったんだけど記号検索できませんでした

751 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:55:22 ]
ttp://homepage2.nifty.com/well/Operator.html#arrow_ast

752 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 02:06:36 ]
結合力最強の二項演算子なので
マクロとかで細工するときに便利なこともあります

753 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 02:24:57 ]
>>751
どうもです
しかしなんだこれって感じですね
ポインタエミュレートのために
(myp_hoge->*(&MyPtr<hoge>::Func))(a, b, c);
といった形で使いたいんですが、定義の仕方が分からないです(->なら簡単なんですが・・・)

>>752
そういう特殊な使い方ってよく思いつくもんですよね

754 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 03:03:47 ]
>>748
徹底したクラス指向で行くならこの程度のものになる。
int main()
{
 MainClass m;
 return m.main();
}



755 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 04:20:39 ]
int main()
{
 return MainClass()();
}
徹底するならこうだろーと思った俺はそろそろ寝るべきか

756 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 04:51:32 ]
operator RESULT(); //用意するだろ普通

757 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 16:29:37 ]
throwでint投げると問題があるようなことを聞いたのですが、
どんな問題があるんでしょうか?
ポインタでキャッチしてしまうとか?

758 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 16:33:36 ]
受け取る方はみんなstd::exceptionを継承してて欲しいなーって思ってるから

759 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 16:44:47 ]
なるほど。よくわかりました。

760 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 17:01:56 ]
istringstream の putback って何回でも呼んでおk?

761 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 21:28:31 ]
boost::functionとstd::functionって混在しても問題ありませんか?
それともどちらか一方にすべきでしょうか?

762 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 21:54:55 ]
混在させたこと無いからわからんけど、大丈夫じゃね?
どっちも最終的にはただの関数オブジェクトになるわけだから
boostのほうにstdのfunctionを代入することも逆もできるはず
名前は名前空間があるからかぶるわけないし

763 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 22:54:37 ]
ABI互換性は?

764 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:03:33 ]
混在といっても、ひとつのコンパイラでコンパイルするんだからABI関係なくね?




765 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:15:46 ]
namespace boost = std ;

766 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:28:03 ]
ありがとうございます。
今のところはboostが使えるならboostが無難かと
思うのでboostにします。


767 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:34:01 ]
>>766
えぇーーー
普通は逆でしょ
標準で済むなら標準を使うのが筋でしょ

768 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:38:24 ]
>>767 std::function はまだ標準じゃないでしょ。

769 名前:767 mailto:sage [2010/03/11(木) 23:40:20 ]
>>768
そりゃそうだ
boost と std だけ見て function を見てなかったよ

770 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:48:14 ]
>>766も「今のところは」って言ってるしな。


771 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 01:27:32 ]
placement newを使わずに、任意のメモリ領域にコンストラクタを呼ぶことは不可能?

772 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 01:30:56 ]
>>771
何がしたいのかわからないけど、コピーでいいなら std::allocator::construct() とか
std::uninitialized_copy() とかが使えるんじゃない?

773 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 10:16:48 ]
template <class T> void Caller( T &f ){ f(); }
に対して、
void Callee();
があり、
Caller( Callee ); // これだとコンパイルが通るのに、
Caller( &Callee ); // こっちは通らない
のはなぜですか?

774 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 10:40:58 ]
codepad.org/WzrQ1BNa
それはポインタだからさ



775 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:32:25 ]
関数の引数に配列の参照を渡したいんですが、どうすればいいですか

776 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:54:16 ]
>>774
サンクスです。
T &fは「関数の参照型」と言えばいいんでしょうか?
また、関数ポインタを呼ぶ際は、
(*f)(); //デリファレンスあり
f();//なし
2通りで呼べますが、これはシンタックスシュガー的なものですか?
どっち使ってもOKですか?

777 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:54:42 ]
template<typename T, size_t N> void func(T (&x)[N])

778 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 00:39:50 ]
typedef std::deque<int>::iterator iterator;
iterator tekitou;
//...
tekitou == iterator(); //tekitouに代入処理がなかったらtrue
を期待して組んでたら例外が発生してパソコンが爆発したんですけど
tekitouがデフォルトコンストラクタ走ったまま何も触られて無いかどうかを判定する方法はありませんか?

779 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 00:52:18 ]
>>778
パソコンが爆発するプログラムを作っているんだったら
いますぐやめなさい。

780 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 00:53:54 ]
パソコンが爆発するプログラムを作っているのではありません。
パソコンが爆発するのを防ぐプログラムを作っているのです。

781 名前:デフォルトの名無しさん [2010/03/13(土) 01:15:50 ]
爆発させるプログラムにも実に巧妙なメカニズムがあってだな・・・

782 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:17:30 ]
兎に角、例外が発生してプログラムが正常に動作しないと爆発を防ぐ事ができないのです。
ご教示いただけないでしょうか?

783 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:20:26 ]
判定する方法は無い
ポインタと違ってイテレータにはNULL入れられないからねぇ
int *ptr = 0;

784 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:21:45 ]
本当に爆発するというなら、
本題なんてどーでもよくて、爆発させる方法を知りたい気すらする。



785 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:22:35 ]
bool変数でも使って対処しとけ

786 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:24:23 ]
std::pair<iterator, param>ってしてたけどSTLがクソ過ぎてstd::pair<std::pair<iterator, bool>, param>って書かなきゃいけなくなったわ・・・

787 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:25:48 ]
こういうときは boost::optional だっけ?

788 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:26:47 ]
つtuple

789 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:30:12 ]
end()をNULL代わりにしたらあかんの?

790 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:32:49 ]
今回もそうでしたが、コンテナを特定できないとそれは使えません。

791 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:55:44 ]
じゃあNULL用の適当なコンテナ作ればいいじゃん

792 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:58:30 ]
std::pair<iterator, param>ってしてたけどSTLがクソ過ぎてstd::pair<std::pair<iterator, dummy_container>, param>って書かなきゃいけなくなったわ・・・

793 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 01:59:08 ]
nil使えよ

794 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 02:06:15 ]
iteratorがコンテナと関連付けられてるかチェックしたいってことなのかな?
わざわざややこしいことやってるように見えるけど



795 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 02:43:02 ]
namespace boost {
namespace detail { struct none_helper{}; }
typedef int detail::none_helper::*none_t ;
} // namespace boost
namespace boost {
none_t const none = ((none_t)0) ;
} // namespace boost

このコードはいったい何をしようとしてるわけ?

796 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 02:55:22 ]
ググった?






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

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

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