我在一个unit的class的public里申明了一个function,在另一个unit里面引用了这个unit,但调用的时候它却说:This form of method call only allowed for class methods,是不是只有继承了这个类的子类才能调用

解决方案 »

  1.   

    不是非要是它的子类才可以使用的。单元引用单元是可以的,可能是你要引用的函数有问题。将它声明在private上面,而不是public里面试试!
      

  2.   

    如果你是在public里面写的function那么你在unit2里声明一个class1(unit1)的对象,就可以用这个对象来调用function了。
      

  3.   

    public的内容可以被外部调用 类实例.function();
    写在private里面就不行了,要用的话只能,Tunit1.function()
      

  4.   

    最好把你调用function的代码贴出来看看,否则很难知道问题在哪里
      

  5.   

    你是这样调用的吧
        unit2.TForm2.functionname;
    TForm2是一个类名称,不是实例,应该
    form2.functionname;用对象调用函数。
      

  6.   

    比如
    unit1
    .........
    type 
     classA=class
    public
    function bFunc();
    ..........
    unit2
    ........
    uses unit1
    我要怎么申明和使用unit1的classA中的bFunc
      

  7.   

    不是由类名称来调用,应该用类实例来调用.TForm2.function---->>>Form2.function
      

  8.   

    unit1
    .........
    type 
     classA=class
    public
     function bFunc();//////////////////
    var
      CA:ClassA; 
    //////////////////
    ..........
    unit2
    ........
    uses unit1
    ///unit1中
      CA.bFunc();
      

  9.   

    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
    Ta:ClassA;
    begin
       Ta:=ClassA.create;
       Ta.BFunc();
       ....
       Ta.free;
       
    end;-------------------定义类方法比如
    unit1
    .........
    type 
     classA=class
    public
    class function bFunc();
    ..........
    unit2
    ........
    uses unit1
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
    Ta:ClassA;
    begin
      Ta.BFunc();
    end;
      

  10.   

    ???如果类申明中不写则默认的是等同于
    classA=class(TObject)
    那要在unit2里面怎么使用
      

  11.   

    一样的,见议看看刘艺<<Delphi面向对象思想>>
      

  12.   

    比如
    unit1
    .........
    type 
     classA=class
    public
    function bFunc();
    ..........
    unit2
    ........
    uses unit1
    我要怎么申明和使用unit1的classA中的bFunc
    -------------------------------------------------
    unit2
    ……
    uses unit1var abc:classA;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
        abc:=ClassA.create;
        abc.bFunc();
    end;end.