某语法问题,很怪,帮忙瞧下。

null1027 2003-10-09 04:46:22
这个是我在类模块里定义的一个函数
Public Function CentoLevel(ByVal strDev As String, ByRef DateAggresgate() As TypeCentoLevel) As Recordset

End Function

那个TypeCentoLevel是我在一个模块里自己定义的public类型,我要是把ByRef DateAggresgate() As TypeCentoLevel去掉或者把前面改成private就可以进行下去了。但是我定义的这个函数是需要由外部来调用的,不可能改成私有或者少个参数也不行呀。

我还没有编写里面的代码,但是就是这样我在全编译的时候就出现一个错误:
compile error:
only public user defined types defined in public object modules can be used as parameters or reture types for public procedures of class modules or as fields of public user defined types.

我的英文不太好,这段话的意思是不是说,只有在共有的对象模块里定义的共有的用户自定义类型可以被用做参数或者类模块的共有的过程的返回值类型或共有的用户自定义类型的共有字段?

我觉得这段话对我的程序没什么影响啊。
...全文
38 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hc_z 2003-10-10
  • 打赏
  • 举报
回复
可能是类模块是为了封装用。
你这么一用会影响封装。
hc_z 2003-10-10
  • 打赏
  • 举报
回复
函数也放在标准模块里就可以。
null1027 2003-10-10
  • 打赏
  • 举报
回复
我明白楼上的意思,换成Variant类型肯定是可以的,但是这样就需要用很多的代码来判断这个数组的内容是否合法。
我觉得用自定义的类型数组作为参数传递,这样可以避免一些错误的发生。
greatqn 2003-10-10
  • 打赏
  • 举报
回复
函数的第二个参数 ByRef DateAggresgate() As TypeCentoLevel
换成 DateAggresgate as Variant
试试。
null1027 2003-10-10
  • 打赏
  • 举报
回复
怎么办啊?这个问题我今天还是没搞定,实在不行我只好扰过这个问题了,但是我还是想知道为什么会出错。
null1027 2003-10-10
  • 打赏
  • 举报
回复
请问: hc_z(石间水)
在类的共有函数里面是不可以把自定义的类型作为参数的吗?是不是VB的语法本身就规定了不可以这样做?
我换另外一种思路做一下好了。其实我本来的想法是:既然那个函数是用来读取并且分析数据库里的数据的,并且我的大部分与数据库有关的操作都放在同一个类模块里了,我就把它放类模块里放一起比较好,自定义了类型是为了防止出错。
谢谢。
Snow780311 2003-10-09
  • 打赏
  • 举报
回复
可以通过类赋值,我觉的
null1027 2003-10-09
  • 打赏
  • 举报
回复
谢谢两位,现在已经下班了。今天还没搞清楚,明天再继续。
null1027 2003-10-09
  • 打赏
  • 举报
回复
不行吧,这个函数是需要从外部调用的,那个类型要是定以在类里面就必须是私有的,从外面调用的时候怎么给这个参数赋值呢,
二师兄的老公 2003-10-09
  • 打赏
  • 举报
回复
同意楼上
射天狼 2003-10-09
  • 打赏
  • 举报
回复
你把TypeCentoLevel定义在类里试一下!!

7,762

社区成员

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

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