功能" AddWeight"可以为每只宠物增加重量。我知道我的所有动物(继承)都具有相同名称的基本信息类型("数据"),所以我确定" AddWeight"功能可以正确处理它。
当然Vba不会让我这样做,我试图在对象或变体的函数标题中声明..它们对我没有任何作用。
有没有人有创意?
我不想为每一只动物编写这个功能,而且我也没有发现这样的功能是优雅的:
Call addWeight(Max_Cat.data)
有人有另一个想法吗?提前致谢
Type basicInfo
name As string
weight as integer
height as integer
End Type
Type cat
data As basicInfo
mustacheType As String
End Type
Type dog
data As basicInfo
bark_volume as integer
End Type
Dim Max_Cat as cat
Dim Buddy_Dog as dog
.
. some code
.
Call addWeight(Max_Cat)
Call addWeight(Buddy_Dog)
Public Function AddWeight(petName as object) 'not work also for petName as variant
petName.data.weight =petName.data.weight+50
End Function
答案 0 :(得分:1)
正如评论中所提到的,这不是最严格意义上的“继承”。它更像是一个复合结构。如果您想使用Type
代表您的数据,显而易见的解决方案是只传递您要使用的成员,即basicInfo
:
Sub SomeSub()
Dim Max_Cat As cat
Dim Buddy_Dog As dog
'Other stuff.
AddWeight Max_Cat.data
AddWeight Buddy_Dog.data
End Sub
Public Function AddWeight(animal As basicInfo)
animal.weight = animal.weight + 50
End Function
如果确实想要使用接口,则需要构建类而不是类型。这样你就可以让它们实现一个通用接口,然后使用接口作为参数。这可能会为您提供更强大和可扩展的代码。