在同一个 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?