PB 電子会議室
カテゴリ:ユーザオブジェクト
日付:2001年02月09日 02:29 発信者:Taka
題名:RE(14):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは?
ryochanさん、こんばんは。
すごいパワーですね。ただただ圧倒されるばかりです。
読めば読むほど混乱に陥っているのは私だけでしょうか。(笑)
私は「どのように考えればオブジェクト型変数を理解し活用できるか」について、
自分の経験(クラス関数の開発や他人への説明など)を踏まえてコメントしています。
その考え方の1つとして「ハンドル」というキーワードを使っています。
決してPowerBuilderの内部制御がアドレス参照なのかハンドル制御なのかを追求しようと
しているわけではありません。(その辺の話はどうでもいいです)
実際にはメモリアドレスをポインタでアクセスしているのなら、それはそれで納得します。
Re(9):
>Takaさんの例もこれで説明つきますよね。
>これはアドレスを比較していると考えられませんか?
考えられますよ。
その値を「ハンドル」と表現した私の考え方と違いがありますか?
Re(10):
>私の環境(Win98、PB6.5)ではやはり例外が発生しましたよ。
>値渡しは正常でした。
>→うそです。再生成するのを忘れていました。
つまり...どういうことなのでしょうか。
Re(4)の後半で「ポインタのポインタになるから、うまくいかない」とありましたが...
>また、Getchildの引数のdatawindowchildも実体はポインタだから結果的に参照渡しになるのでは?
>Getchildはdatawindowchildのインスタンスを生成し、生成されたデータ部のアドレスを
>宣言したdatawindowchild型ポインタ変数に割り当てているからだと思いますが。
そうだったんですか。勉強になりました。
>関数のソースもref宣言しているのですか?
>たとえref宣言しなくてもポインタの値渡し=参照渡しになると思いますが。
「何か」が代入されて戻される以上、単純にrefの引数かな?と思っただけです。
GetChild関数のソースがどう書かれているかなんて、私の知る所ではありません。
ちなみに、PBの[オブジェクトブラウザ]を開いて[システム]タブを選択し、
1) datawindow.getchild()
2) systemfunctions.open()
を見てください。「何か」が戻される可能性のある引数は refが付いています。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.