使用参数方法时的运行时错误

问题描述

我目前在尝试使用参数对象的方法时遇到错误

要做什么:

USING class.Bar.
CLASS class.Foo SERIALIZABLE INHERITS Progress.Lang.Object:  
DEFINE PRIVATE VARIABLE cRrk_ID AS CHaraCTER NO-UNDO.

  CONSTRUCTOR PUBLIC Foo(INPUT objBar AS Bar):
    THIS-OBJECT:cRrk_ID = objBar:getRrk_ID(). //Runtime Error: Invalid Handle (3135)
  END.
END.

CLASS class.Bar SERIALIZABLE INHERITS Progress.Lang.Object:
  DEFINE PRIVATE VARIABLE cRrk_ID AS CHaraCTER NO-UNDO.

  CONSTRUCTOR PUBLIC Bar(INPUT pcRrk_ID AS CHaraCTER):
    THIS-OBJECT:cRrk_ID = pcRrk_ID.
  END.

  METHOD PUBLIC CHaraCTER getRrk_ID():
    RETURN THIS-OBJECT:cRrk_ID.
  END METHOD.
END.

有人可以解释为什么我不能使用对象的方法作为参数吗?

解决方法

您需要新建类。在类中先放置Foo的构造函数。

  CONSTRUCTOR PUBLIC Foo(INPUT objBar AS Bar):
    objBar = NEW class.Bar () .
    THIS-OBJECT:cRrk_ID = objBar:getRrk_ID(). //Runtime Error: Invalid Handle (3135)
  END.
,

您可以使用但创建Bar对象并发送给Foo的构造函数:

DEFINE VARIABLE objBar AS "class.Bar"     NO-UNDO.

objBar = NEW "class.Bar"("hi").

DEF VARIABLE objFoo AS "class.Foo" NO-UNDO.

objFoo = NEW "class.Foo"(objBar).