我写了一个类Menu,其中有方法
Public Function Init(Optional ByVal Menu_Id As Long) As Boolean
然后写一个类Struct_HTML
在Struct_HTML中我想有一个属性Menu(这个Menu属性返回Menu对象)
于是我是这样写的:
private mvarMenu_Id As Long
Public Property Get Menu() As Menu
Set Menu = New Menu
If mvarMenu_Id > 0 Then
If Not Menu.Init(mvarMenu_Id) Then
'错误处理:Menu没有正确初始化
End If
Else
ErrMsg = "Struct_HTML尚未初始化"
End If
End Property
现在有个问题时如果我调用的时候:
set obj1= new struct_HTML
if obj1.init(1) then
'此处我的所有的类的init方法的调用格式都一样,返回的都是Boolean表示是否初始化成功
set obj2=obj1.menu
end if
现在对obj2的操作不会出现任何问题
例如:obj2.menuname="haha"bj2.update
而我这样:
obj1.menu.menuname="haha"
obj1.menu.update
是不能通过的,因为每一次都是重新初始化了一个新的menu实例
Struct_HTML类中有一个Menu属性,那么你的Struct_HTML类应该有一个Menu属性变量,假设为
Dim mvarMenu as Menu
那么应该为
Public Property Get Menu() As Menu
if mvarMenu is Nothing then mvarMenu=New Menu
If mvarMenu_Id > 0 Then
If Not mvarMenu(mvarMenu_Id) Then
'错误处理:Menu没有正确初始化
End If
Else
ErrMsg = "Struct_HTML尚未初始化"
End If
Set Menu=mvarMenu
End Property