- 37 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 12:56:24 ]
- >>33
普通だよ〜 > C++ メソッド 関数ポインタとか必要な情報をクロージャにバインドさせておいてそれをつかって 呼び出す。sqplus とかとでやってるのと同じ。 後から登録したのが有効なのは順番が逆だよ。_get/_set がスルーしてるんじゃなくて、 squirrel 的に見つからなかったときに初めて _get/_set が呼ばれてる。 _set/_get でスルーした後は、squirrel 側ではメンバ見つからなかったよ例外になるだけ。 squirrel のメンバは常時上書き処理でつぶされるので、メンバの継承はできない。 C++ 側の継承概念を一貫性をもってひきこむにはメソッド化するしかない。 _get/_set で C++のメンバ参照を実現してる場合、そのメタメソッドを直接呼び出せば 元のC++のメンバは見れるけどそれは継承じゃないだろうと。 あと、メタメソッドは機構上、必ずインスタンスに張り付いてるそれが呼び出されるようで、 メタメソッドを上書きしてから親クラスのそれをよびだそうとしても自分のそれが 呼び出されて無限ループになるって罠もあったり <はまった バインドされた C++ クラスの扱いは、まあ、好みの問題ってことで。 おいらは、squirrel だけで書いたクラスと同感覚で使いたい人 >そういや、Squirrelはプロパティがほしいかも。 ↓これがプロパティもどき >ちなみに_get/_set 自体は、メンバが存在してなかったら、その名前に合致した >getter/setter を探してそれを呼び出すって形の機能を組んで使ってる setter / getter 両方あれば読み書き可能プロパティ、getter だけなら 読み込み専用プロパティ、setter だけなら書き込み専用プロパティ、でまあ、ちゃんと それっぽくできてる。その機構用に使ってるからバインダは勝手につかわんでくれってのもある
|

|