いがらしさん、説明ありがとうございます。
やまぐちです。

At 16:50 +0900 99.11.12, Hiroshi IGARASHI wrote:
>rubyにおけるcloneは、デフォルト(Object#clone)では浅い(shallow)コ
>ピーを行ないます。あるオブジェクトをcloneした場合、インスタンス
>変数(上の例の@icon)により参照されているオブジェクトはコピーされません。
>
>> icon=Icon.new("Hoge.gif")
>> icon2=icon.clone
>> pix=::icon.return
>> pix2=::icon2.return
>p([pix, pix2])
># => [#<Gtk::Pixmap: id=0x80ed398>, #<Gtk::Pixmap: id=0x80ed398>]
>
>などとすると分かるように、pix, pix2は同一オブジェクトを参照して
>います。この後ろの

あ、レファレンスマニュアルのcloneの説明はこういう意味だったんですね。
#読解力なさすぎ>自分(_ _;;;;

>それではpix.cloneすればいいのかというと、
>
>> で(ちょっと問題解決に見通しが悪いと思ったので)
>(略)
>> のスクリプトを実行してみると、タイトル"b" のウィンドウしか出ず、
>> しかも window2.show の部分をコメントアウトしてもタイトル"b"の
>> ウィンドウが出てきます。
>> (つまり、cloneでオブジェクトの複製がされていない?)
>
>のように、rubyレベルでは複製できたように見えても、GTKレベルでは
>複製されないので、cloneにより得たオブジェクトは使うことができま
>せん。面倒でも別個にnewして下さい。

なるほど。そういうことだったんですね。
了解しました。

>#GTKのオブジェクトはCレベルでも複製できないので、rubyでも
>#cloneできないようにしてしまった方がいいですね。

そうですね。

>> * * * rbnamazu作成中 * * *
>
>楽しみにしてます(^_^)

がんばります(^_^)
----
やまぐちたかゆき
tyamaguchi / geocities.co.jp
yamaguchi / ppc.linux.or.jp
#とかいいながら、実は複製の実装、どうやったらできるかな、なんて
#邪な考えがちらりほらり<GTK+ widget