しぶかわです。

ext/dbm.hを真似て
	rb_define_method(cSurface,"initialize", Surface_init,0);
を
	rb_define_singleton_method(cSurface,"new", Surface_init,0);
にしたらwrong argument typeは出なくなりました。画面の初期化、ビットマップの表示
まで行けました。
	rb_define_singleton_method(hogehoge,"initialize",・・・
は引数を取るコンストラクタではうまく動きませんね。
Data_Wrap_Struct()、Data_Make_Struct()を使う場合はsingletonのnewをスタートアップ
コードに使う、というのでいいんですか?
でもどうしてなんだろう・・・

> |もう一つ、
> |RubyのクラスをC言語から作るときのことですが、スタートアップコードの流儀ってあり
> |ますか?というのは、new、initializeどちらでやるべきか(まだinitializeしか試して
> |ません)、特異メソッドにするか、ふつうのメソッドにするか(Rubyのソースでは両方あ
> |った気がする)。なにか指針があれば教えてください。
> 
> initializeを使って下さい。特異メソッド(ってのはクラスメソッ
> ドのことだと思いますが)については、使う必要があればどうぞ使っ
> て下さい。

まつもとさんがこう言われるには何か理由があると思いますがどのような理由からなんで
すか?よろしければ教えてください。Rubyが動的オブジェクト指向スクリプト言語だか
ら、間接的に答えなのではないかと推測できますが、具体的に何故かは分かりません。

----

    東京工業大学 電気電子工学科 2年
_/_/_/  しぶかわよしき    JA6HFA/1
_/      mailto: shibu / JA1YAX.gr.jp