如何将数组作为自定义类属性赋值并正确访问(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
相关产品推荐
相关产品推荐

