Class 如何将方法的返回值视为类类型-Itcl

Class 如何将方法的返回值视为类类型-Itcl,class,tcl,return-value,itcl,Class,Tcl,Return Value,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 #

假设我在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命令添加作用域,以便调用与类A关联的Print方法。 但我真的不知道怎么做

我还读了以下帖子:


但是它没有说明如何将返回值视为特定的类类型变量

您必须限定尚未创建的类实例的名称
a

A [namespace current]::#auto

否则,所创建对象的名称将以非限定方式返回(
0
a0
,…),这无法解析为调用方范围内的Tcl命令
returnA

请参见另一个问题:您为什么要在Itcl上进行培训?为什么不使用tcl8.6自带的内置OO系统
TclOO
。顺便说一句,更新的ITcl版本是建立在TclOO之上的,所以没有什么好处,特别是如果你开始使用Tcl(并且你没有被锁定在ITcl中)。此外,上面的代码片段不是一个MVE。。。请。请关注这个问题。MRCALVIN,我需要提供一个TCL -C++ API,我读到使用ITCL是最好的解决方案。您是否建议改用TclOO?我可以在哪里阅读?你的信息来源是什么?Itcl和C++?最好联系comp.lang.tcl,获取有关应用程序技术选择的反馈。