我是面向对象编程的新手。 我在类模块中有两个类:
ClassA的
Public Time As Double
ClassB的
Public Sub Progress()
ClassAObject.Time = 5
End Sub
这是子程序
中运行的代码Public Sub Progressing()
Dim ClassAObject As New ClassA
Dim ClassBObject As New ClassB
Call ClassBObject.Progress
End Sub
子例程ClassBObject.Progress
似乎无法访问ObjectA
。我想我如何引用该对象可能是错误的。我该如何解决这个问题?
答案 0 :(得分:3)
B类不知道A类。有很多方法可以做到这一点,但一种方法是让.Progress()
sub接受输入。
ClassA中的代码:
Public Time As Double
ClassB中的代码:
Public Sub Progress(ClassAObject As ClassA)
'Assuming that you have a .Time property in ClassAObject
ClassAObject.Time = 5
End Sub
主要代码:
Sub Main()
Dim ClassAObject As New ClassA
Dim ClassBObject As New ClassB
ClassBObject.Progress ClassAObject
End Sub
答案 1 :(得分:2)
您可以将ClassA
的实例传递给Progress
方法。例如:
将Progress
方法更改为:
Public Sub Progress(a As ClassA)
a.Time = 5
End Sub
并称之为:
Public Sub Progressing()
Dim ClassAObject As New ClassA
Dim ClassBObject As New ClassB
Call ClassBObject.Progress(ClassAObject) ' <--- pass instance of ClassA
End Sub
我建议为您的课程和对象提供更具描述性的名称,即使您只是在练习。它将使您和其他人更容易阅读和理解您的代码。例如,Dim apple As New Fruit
总是比Dim ClassAObject As New ClassA
更容易理解。