怎么使一个函数只能在本应用中的其他类访问,而不能在外部访问,对应其他语言就是protect声明参数,

解决方案 »

  1.   

    Private只能在同一个类模块里面访问吧
    其他类模块不行访问吧
      

  2.   

    在类模块中修改过程的定义,使得能从类之外的模块调用这个过程,但这些模块必须是定义这个类工程的一部分。语法[Private | Friend | Public] [Static] [Sub | Function | Property] procedurename必需的 procedurename 是一过程名,要使该过程在整个工程中可见,但对于这个类的控制者是不可见的。说明在一个类中的 Public 过程能在任何地方被调用,甚至能被这个类的实例的控制者调用。声明过程为 Private,可防止该对象的控制者调用这个过程,但也阻止了从定义该类本身的工程内部调用该过程。Friend 使过程在整个工程中可见,但对于该对象的实例的控制者来说不可见。Friend 只能出现在类模块中,且只能修改过程名,不能修改变量或类型。类中的过程能够访问工程中其它类的 Friend 过程。Friend 过程不出现在它们的类的类型库中。Friend 过程不能是后期绑定的。
      

  3.   

    使用friend声明后调用方法的出错提示
    Can not call friend function on object which is not an instance of defining class
    原因可能是因为我必须要用到creatobject,因为所用的连接在object的active时激活,如果
    是 dim comxx as new comm则连接会无效
    所以,调用方法在
     dim comxx as comm
     Set comxx = CreateObject("Hg_asp.Comm")
    的情况下,要如何使工程内能访问,工程外不能呢????
      

  4.   

    思维混乱!你做的是标准EXE还是ActiveX组件?看样子像是标准EXE,怎么会能在工程外访问呢?不懂!
      

  5.   

    private 定义的只能在窗体中的过程调用
    public  定义的能供整个工程中的所有过程调用
      

  6.   

    这个问题可以看看我这个帖子,可能有点帮助,
    http://expert.csdn.net/Expert/topic/2178/2178266.xml?temp=1.398867E-02
      

  7.   

    是com+组件,所以要这么用,楼上的帖子我看了一下,好像有点麻烦,继续顶
      

  8.   

    不是很麻烦的,有一部分代码不属于这个问题。要解决也很简单。主要是,得到类的基地址,把想要被外部类所访问的过程定义为friend,把得到的基地址传给新定义的类,通过操作新定义的类,就可以访问类里的函数。