You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组作为自定义类属性赋值并正确访问(VB作业相关问题)

问题根源

你目前的代码存在3个核心错误:

  • 属性返回类型不匹配:你当前的Property Get genre声明返回单个eGenre枚举值,但你实际需要返回的是eGenre类型的数组
  • 缺少数组属性的赋值方法:VBA中给数组类型的类属性赋值需要对应声明Property Let方法,普通赋值逻辑无法直接生效
  • 命名与访问逻辑不匹配:你定义的属性名是单数genre,调用和赋值时用的是复数genres,且你尝试对单个枚举值取下标,自然会报错

修正方案

第一步:调整类内部的私有变量与属性声明

在你的movie类顶部通用声明区,先定义存储类型数组的私有变量,再补全对应的属性读写方法:

' 类顶部通用声明
Private m_genres() As eGenre ' 私有存储变量,eGenre类型数组

' 读取属性:返回eGenre类型数组
Property Get genres() As eGenre()
    genres = m_genres
End Property

' 写入属性:接收eGenre类型数组完成赋值
Property Let genres(value() As eGenre)
    m_genres = value
End Property

第二步:保留原初始化逻辑即可

你原来的initialiser方法中genres = CreerTabGenre(arrData(3))的写法不需要调整,只要确保CreerTabGenre方法的返回值是eGenre()类型的数组即可,如果它现在返回的是变体数组,你需要调整该方法的返回类型声明。

第三步:调整调用侧的访问写法

Function genrePopulaire(tabFilms() As film) As String
    Dim i As Integer, j As Integer
    For i = 0 To UBound(tabFilms)
        MsgBox tabFilms(i).genres(0) ' 直接对返回的数组取下标即可
    Next i
End Function

内容的提问来源于stack exchange,提问作者Pierre Merlet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:54:05