假如新建类模块 clsData
包含如下代码
public Type Record
    strName As string
    strNumber As Long
End Type
我编译了一下,不行但是我看见过别人的代码里面可以这么使用为什么?

解决方案 »

  1.   


    public Type Record
        strName As string
        strNumber As Long
    End Type
    象这样写
    Public Orderreturn() As Orderexeresult
    Type Orderexeresult
    light_node As Integer
    exetime As String
    listnum As Integer
    ordertype As String
    End Type
      

  2.   

    MSDN:对象模块中的用户定义类型不能为 Public。这个错误的起因与解决方法如下所示: 试图在对象模块中定义 Public 用户自定义类型。 
    将用户自定义类型的定义移到标准模块中,然后在对象模块或其它模块中声明该类型的变量。若只是要在它出现的模块中使用该类型,可以在对象模块中放入 Type...End Type 定义,并在定义之前加上 Private 关键字。
      

  3.   

    写在模块中就可以,可以是Public的
      

  4.   

    按照MSDN的正确说法呢 是不可以的但是后来问了那位牛人, 据他说是做了一个dll,注册类模块我还不清楚
      

  5.   

    如果是standard EXE工程中的类模块,Instancing属性只能是private,也就是说编译时不生成类型信息,所以不允许定义成public(否则vb运行时无法管理)如果是ActiveX Dll或者ActiveX Exe工程,把包含自定义类型的类模块的Instancing属性改为其他类型,就可以了
      

  6.   

    另外,如果对IDL比较了解得话,可以做个TLB,更方便
      

  7.   

    Class的作用域也有关系如果是ActiveX EXE, DLL工程中,Class可以被导出到其他工程中,这样的Class是Public作用域的,其中也能放Public结构体声明