我在理解如何制作自己的类型对象时遇到了一些麻烦。 我有两个不同的类,我希望我的列表类型被赋予数据类型的对象。
数据类:(请注意,这只是代码的一部分)
Private index As Integer
Private id As String
Private nameID() As String
Private data() As String
Private cnt As Integer
Public Function constructor(value As Integer)
index = 0
cnt = value
id = ""
ReDim nameID(0 To cnt)
ReDim data(0 To cnt)
End Function
Property Let setName(value As String)
nameID(index) = value
End Property
Property Let setData(value As String)
data(index) = value
index = index + 1
End Property
Property Get getName()
getName = nameID
End Property
Property Get getData()
getData = data
End Property
列表类别:
Private xArray() As dataStruct
Private index As Integer
Public Function constructor(cnt As Integer)
ReDim xArray(1 To cnt)
Dim num As Integer
For num = 1 To cnt
Set xArray(num) = New dataStruct
'xArray(num).constructor(10)
Next
index = 1
End Function
因此,当我尝试将值从数据类获取到列表类时,就会出现我遇到的问题。我试图将它们设置为彼此相等,并分别分配每个值,但似乎没有任何效果。我收到“运行时错误'438:对象不支持此属性或方法”。如果尝试使用注释的代码,我会越过setID
,但在输入setName
时会出现类型不匹配,但应为字符串类型的数组。
Property Let addArray(value As dataStruct)
xArray(index) = value
'xArray(index).setID = value.getID
'xArray(index).setName = value.getName
'xArray(index).setData = value.getData
'xArray(index).setCnt = value.getCnt
index = index + 1
End Property
[编辑:添加了get和set方法的示例]
答案 0 :(得分:0)
只需将一个方法添加到每个类中,该方法要么作为另一个类输出,要么将输入作为另一个类。您尚未列出任何属性,因此我将猜测您如何获取价值。
例如,在数据类中
Sub ConvertFromList(values as List)
Redim data (0 to values.data.count)
For iterator = 0 to values.data.count
data(itearator) = values.data(iterator)
Next iterator
End Sub
我的示例并不漂亮,也不完整-但是开始时没有提供太多信息。但这确实使您知道可以做什么。
一个整洁的解决方案是在类中使用Function
/ Data
导出类中的List
。