在同一个 class 对象中使用 class 对象作为参数
Using a class object as a parameter within the same class object
我在使用名为 "Spectrum"
的自定义 class 模块时遇到问题
下面这行代码应该从 spectrum "A" 中减去 spectrum "B" 直接修改 "A".
中的私有变量
A.subtract(B)
但是在 运行 时,我得到一个 "Run-time error '438': Object doesn't support this property or method"
这是来自 "Spectrum" 自定义 class 模块的子例程:
Private pYValues(1 TO 10000) as Double
Private pIndex as Integer
Public Sub Subtract (Value as Spectrum)
Dim i as Integer
For i = 1 to pIndex
pYValues(i) = pYValues - Value.YValues(i)
Next i
End Sub
Public Property Get YValues(index as Integer)
YValues = pYValues(index)
End Property
这是我试图从一个单独的模块 运行 实际代码片段:
Sub testArrayLoading()
' Create a file dialog object
Dim fd As FileDialog
' Choose destination folder (global resource variable!)
Set fd = Application.FileDialog(msoFileDialogOpen)
fd.Show
' Create a spectrum object
Dim mySpectrum1 As Spectrum
Dim mySpectrum2 As Spectrum
Set mySpectrum1 = New Spectrum
Set mySpectrum2 = New Spectrum
' Populate each spectrum with data
mySpectrum1.Import (fd.SelectedItems(1))
mySpectrum2.Import (fd.SelectedItems(1))
' Subtract one spectrum from the other
mySpectrum1.Subtract (mySpectrum2)
End Sub
我不能在同一个 class 中使用 class 对象作为参数吗?或者我应该使用 属性 而不是子例程?
到目前为止,我已尝试使用 ByVal 和 ByRef,并将子例程切换为 Public 属性 Set。两者都没有为我工作。我想我只是遗漏了一些关于将自定义 class 对象作为参数传递的理解。
感谢您的帮助,
迈克尔
括号。这条线...
mySpectrum1.Subtract (mySpectrum2)
...应该是...
mySpectrum1.Subtract mySpectrum2
...或者:
Call mySpectrum1.Subtract(mySpectrum2)
见What does the Call keyword do in VB6?
我在使用名为 "Spectrum"
的自定义 class 模块时遇到问题下面这行代码应该从 spectrum "A" 中减去 spectrum "B" 直接修改 "A".
中的私有变量 A.subtract(B)
但是在 运行 时,我得到一个 "Run-time error '438': Object doesn't support this property or method"
这是来自 "Spectrum" 自定义 class 模块的子例程:
Private pYValues(1 TO 10000) as Double
Private pIndex as Integer
Public Sub Subtract (Value as Spectrum)
Dim i as Integer
For i = 1 to pIndex
pYValues(i) = pYValues - Value.YValues(i)
Next i
End Sub
Public Property Get YValues(index as Integer)
YValues = pYValues(index)
End Property
这是我试图从一个单独的模块 运行 实际代码片段:
Sub testArrayLoading()
' Create a file dialog object
Dim fd As FileDialog
' Choose destination folder (global resource variable!)
Set fd = Application.FileDialog(msoFileDialogOpen)
fd.Show
' Create a spectrum object
Dim mySpectrum1 As Spectrum
Dim mySpectrum2 As Spectrum
Set mySpectrum1 = New Spectrum
Set mySpectrum2 = New Spectrum
' Populate each spectrum with data
mySpectrum1.Import (fd.SelectedItems(1))
mySpectrum2.Import (fd.SelectedItems(1))
' Subtract one spectrum from the other
mySpectrum1.Subtract (mySpectrum2)
End Sub
我不能在同一个 class 中使用 class 对象作为参数吗?或者我应该使用 属性 而不是子例程?
到目前为止,我已尝试使用 ByVal 和 ByRef,并将子例程切换为 Public 属性 Set。两者都没有为我工作。我想我只是遗漏了一些关于将自定义 class 对象作为参数传递的理解。
感谢您的帮助,
迈克尔
括号。这条线...
mySpectrum1.Subtract (mySpectrum2)
...应该是...
mySpectrum1.Subtract mySpectrum2
...或者:
Call mySpectrum1.Subtract(mySpectrum2)
见What does the Call keyword do in VB6?