クラス内のStatic変数について

解決


羽住  2008-10-08 11:11:33  No: 101200  IP: 192.*.*.*

クラス内にあるStatic変数は、Newした変数が違うと
共有できないのでしょうか?

sample関数の
> Debug.Print c1.test
> Debug.Print c2.test
> Debug.Print c1.test
> Debug.Print c2.test
では

1、2、3、4
と表示されて欲しいのですが。。。
実際には
1、1、2、2
と表示されます。

モジュールを使用しなければ出来ないのでしょうか?

環境:VB6.0

宜しくお願いします。


以下プログラム-------------------------------
Sub sample()

  Dim c1 As TestClass
  Dim c2 As TestClass
  Set c1 = New TestClass
  Set c2 = New TestClass

  Debug.Print c1.test  ' ← 1が表示される
  Debug.Print c2.test  ' ← 1が表示される
  Debug.Print c1.test  ' ← 2が表示される
  Debug.Print c2.test  ' ← 2が表示される

End Sub

-------------------------
※ TestClass.cls

Public Property Get test() As Long

  Static i As Long
  i = i + 1
  test = i

End Property

編集 削除
ガッ  2008-10-08 14:05:38  No: 101201  IP: 192.*.*.*

VB6にはクラス変数はありません.
ご提示の static i as long は関数内の制的変数です.

VB6でクラス変数の機能を代用する場合は,
標準モジュールにPublicで組み込むなど,クラス外で共有する方法しかありません.

編集 削除
羽住  2008-10-14 09:18:03  No: 101202  IP: 192.*.*.*

遅くなりました

やっぱり、そうなんですね。
ありがとうございました。

編集 削除
羽住  2008-10-14 09:18:43  No: 101203  IP: 192.*.*.*

解決のチェック付け忘れました。

編集 削除