On Sat, 31 Jan 2004 22:57:46 +0900,
Shibukawa Yoshiki <yoshiki@....jp> wrote:
> SWIGの話
>
> SWIGはC/C++のオブジェクトをスクリプト言語側からうまく扱えるようなインタ
> フェースコードを生成します。スクリプト言語のGCなどが使えるように、C/C++
> のオブジェクト自体は「void* で指示された何バイトかのメモリ」として扱われ
> ます。これはたいていのスクリプト言語のC言語のAPIで用意されています。戻す
> 場合にはキャストしてもどしますが、継承しているクラスがある場合、例え親ク
> ラスとして扱われる場合にも、きちんとキャストを行わないとスライシングが発
> 生してあまりうれしくない状況になります(多重継承している場合)。
SWIG って、全く知らないので教えてください。ここで書かれているスライシング
ってどういう意味なのでしょうか?
戻すというのは、C、C++のコード側からスクリプト言語にオブジェクトを戻すので
しょうか、あるいはその逆?
> 多重継承のキャストが内部でどういうことをしているのか、というのは以下の
> URLが参考になると思います。Visual C++の実装内部のお話です。難しいです。
> 僕も完全には理解していません。
>
> http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/
> jangrayhood/
トッパンから出ていた、C++オブジェクトモデルのふんちゃらっていう本は C++
コンパイラの実装の話が詳しく書かれていて面白かったです。
-- Yuji Yamano
C programmers think memory management is too important to be left to
the computer. Lisp programmers think memory management is too important
to be left to the user. --Margaret A. Ellis and Bjarne Stroustrup