关于自定义类型,急急急!!

kenskens 2006-08-09 03:04:30
在模块文件中自定义了一个类型
Public Type typAAA
......
End Type

然后在一个类模块中定义一个此类型的动态数组Private aUserSubsidyAry() As typSubsidyImport

要在另一个窗体类中显示数组中的值,本想直接写成Public,却发现不行,写成Private就可以,为什么这个自定义的类型不能作为Public型的过程或函数的参数传递?提示说编译错误,“只有在公共对象模块中定义的公共用户定义类型可以作为参数,类模块的公共过程返回类型,公共用户定义类型的字段使用。”

我想用Public Property Get XXX() As typAAA这样方式获取,也不行,反正只要Public开头都不行,换成Private就可以。

可我这个数组定义在类模块中,要在另一个窗体类中显示,怎么给弄过去啊???
...全文
180 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rgwfeng2 2006-09-12
  • 打赏
  • 举报
回复
mark
DengXingJie 2006-08-09
  • 打赏
  • 举报
回复

Public Type typAAA
......
End Type
放到物件類模組中,即擴展名為cls的那種
mustudent 2006-08-09
  • 打赏
  • 举报
回复
学习
PANBing 2006-08-09
  • 打赏
  • 举报
回复
学习
fxy_2002 2006-08-09
  • 打赏
  • 举报
回复
一直没用过 friend,原来还有这个用途...又学了一招:D
wjx818 2006-08-09
  • 打赏
  • 举报
回复
写这种自定义类型可以直接在模块中定义如:
给你个例子:
Type XXX '
。。。。
End Type
Public YYY As XXX
你就可以在各个窗体中调用了
还想懒够 2006-08-09
  • 打赏
  • 举报
回复
同一个工程中,可以使用Friend则可以在另外一个类中进行调用

如果需要外部工程,则可以利用Variant进行转换
PANBing 2006-08-09
  • 打赏
  • 举报
回复
'用户自定义类型不可用作类中函数的返回值类型。

'但可以通过传指针来传结构体的目的

'窗体Form1
Option Explicit

Private myType As TestType
Private myCls As New clsTest

Private Sub Form_Load()
myCls.GetValue (VarPtr(myType))
Debug.Print myType.a; myType.b
End Sub

'模块 Module1
Option Explicit

Public Type TestType
a As Long
b As Long
End Type

'类 clsTest
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private m_Test As TestType

Public Sub GetValue(ByVal SourPtr As Long)
CopyMemory ByVal SourPtr, ByVal VarPtr(m_Test), LenB(m_Test)
End Sub

Private Sub Class_Initialize()
With m_Test
.a = 100
.b = 200
End With
End Sub
kenskens 2006-08-09
  • 打赏
  • 举报
回复
“不能作为Public型的过程或函数的参数传递”,我习惯把Function叫做函数。。。

只要写成Public就不行,Private就可以,问题是Private方法在另一个类中无法调用,郁闷。。。

在线等待。。。
fxy_2002 2006-08-09
  • 打赏
  • 举报
回复
晕。上面答案错误!function 中也是不行的。
fxy_2002 2006-08-09
  • 打赏
  • 举报
回复
改成用方法来获取:

public function xxx() as typAAA
xxx=aUserSubsidyAry
end function
kenskens 2006-08-09
  • 打赏
  • 举报
回复
上头写错一点:
然后在一个类模块中定义一个此类型的动态数组Private Ary() As typAAA

一不小心把代码粘上来了。。。

小弟新手,各位大哥帮下忙,谢谢!

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧