如何将方法中的 return 值视为 class 类型 - Itcl

How to treat a return value from method as a class type - Itcl

假设我在 Itcl 中实现了以下代码。

package require Itcl

itcl::class A {
    constructor {} { puts $this }
    destructor {}
    public method Print {} { puts "ok" }
}

itcl::class B {
    constructor {} { }
    destructor {}
    public method returnA {} { return [A #auto] }
}

B b   ;# create an instance of class B
set obj [b returnA]   ; #assign return value to obj
$obj Print    ;# should treat obj as an A type and print ok

现在,我收到以下错误:
无效的命令名称“0” 在执行时 "$obj 打印"

我知道我需要向我的变量或 Print 命令添加范围,以便调用与 class A 关联的 Print 方法。 但是我真的不知道怎么办。

我还阅读了以下内容post:

How to get a reference on the Itcl class member variable?

但它没有说明如何将 return 值视为特定的 class 类型变量

您必须限定尚未创建的 class 实例的名称 A:

A [namespace current]::#auto

否则,创建对象的名称将以不合格的方式返回(0a0、...),无法解析为范围内的 Tcl 命令returnA.

的来电者