我试图创建一个树(实际上是一种复合模式),但我不能将创建的类的项添加到父项中的项集合中。
在课堂内
Private pChildList As Collection
Private Sub Class_Initialize()
Set pChildList = New Collection
End Sub
Public Property Set ChildList(Value As CProduct)
pChildList.Add Value
End Property
Public Property Get ChildList() As Collection
ChildList = pChildList
End Property
主要功能调用
Set Pro = New CProduct
Set Child = New CProduct
Pro.ChildList.Add Child
因此结果应该是在其pChildList集合中具有Child的父(Pro),但是我只得到错误" Argument不是可选的"。
非常感谢提前!
答案 0 :(得分:3)
您在属性中缺少Set
获取定义。 Collection
是一个对象,您需要使用Set
关键字将其影响到变量。
Public Property Get ChildList() As Collection
Set ChildList = pChildList
End Property
在您评论后补充我的答案:
Property Set
适用于对象,Property Let
适用于基本类型。这两个属性通常用于更改成员变量的值(并且预期会这样做),即访问变量以进行写入,但您可以在代码中执行任何操作。
Property Get
通常用于返回成员变量的值(但是再一次,您可以在代码中执行任何操作),即访问变量以进行读取。
由于没有理由改变pChildList本身,我会完全放弃Property Set
。
您还可以决定完全隐藏成员变量并使用成员函数添加和删除Childs,例如:
Public Sub AddChild(vValue as CProduct)
pChildList.Add vValue
End Sub