首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在vba中使用接口实现不同类型的相同函数

在vba中使用接口实现不同类型的相同函数
EN

Stack Overflow用户
提问于 2017-01-05 12:36:54
回答 1查看 206关注 0票数 3

功能"AddWeight“可以给每只宠物增加重量。我知道我所有的动物(继承)都有相同名称的basicInfo类型(“数据”),所以我确信"AddWeight“函数可以正确地处理它。

当然,Vba不会让我这么做,我试着在函数标题中声明对象或变体。他们都不为我工作。

有人有创意吗?

我不想为每一个动物编写这个函数,我也不认为像这样调用函数很优雅:

代码语言:javascript
复制
Call addWeight(Max_Cat.data)

有人有别的主意吗?提前感谢

代码语言:javascript
复制
   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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-05 23:59:33

正如注释中提到的,这不是严格意义上的“继承”。它更像是一个复合结构。如果您想使用Type来表示数据,那么最明显的解决方案就是传递您想要使用的成员,即basicInfo

代码语言:javascript
复制
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

如果您真的想使用接口,则需要构建类而不是类型。这样,您就可以让他们实现一个公共接口,然后使用该接口作为参数。这可能会给您提供更健壮和可扩展的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41485312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档