ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 11:24

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - クラスの新機能のバグ
作成者 メッセージ
  記事の件名:   引用付きで返信する
なるほど。了解しました。
ただ、
コード:
C[0] = 10
というのはいかにも気持ち悪いので、間接参照演算子が欲しいところです。
ByValあたりがいいような。
投稿記事 Posted: 2006年9月06日(水) 23:34
  記事の件名:   引用付きで返信する
コード:
Dim C As *CTest 
C = New CTest 
C = 10 
Delete C
これはCというポインタ変数に10という数値を代入されていると解釈されます。
だからOperator =が呼ばれないのです。
C[0] = 10とすればOperator =が呼ばれ,正常に動くはずです。

#間接参照演算子(*)があったほうが良いのかもしれません。
投稿記事 Posted: 2006年9月06日(水) 10:43
  記事の件名:  クラスの新機能のバグ  引用付きで返信する
AB5CP2のその他の変更点において、
>自信のクラスと同一のクラス型オブジェクトに対するプライベート メンバ/メソッドへのアクセスを許可するように改良。
とあるわけですが、自身と同一のクラスの引数があるメソッドで、Private, Protectedなメンバに触ろうとしても
コンパイル時に「Privateメンバ~」というエラーが出てしまいます。

また、Newで生成されたクラスにおいて、演算子オーバーロードを実行するとアクセス違反が起こります。

32bit WinXpHome IE6という環境で確認しました。
お忙しいとは思いますが、修正のほどよろしくお願いいたします。
コード:
Class CTest
Private
  Num As Long
Public
  Sub Assign(ByRef Source As CTest)
    Num = Source.Num
  End Sub

  Function getNum() As Long
    getNum = Num
  End Function

  Sub setNum(Value As Long)
    Num = Value
  End Sub

  Sub Operator = (Value As Long)
    setNum(Value)
  End Sub

End Class

#prompt
'Privateメンバにアクセスする
Dim A As CTest, B As CTest
A = 10
B.Assign(A)
Print B.getNum()

'動的なクラスの演算子オーバーロードを実行する
'Dim C As *CTest
'C = New CTest
'C = 10
'Delete C
投稿記事 Posted: 2006年9月06日(水) 02:19

全ての表示時間は UTC+09:00 です


ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean