假设我在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现在,我得到以下错误:
执行"$obj打印“时命令名"0”无效
我知道我需要向变量或Print命令中添加作用域,以便调用与类A相关联的Print方法,但我不知道如何调用。
我还读了以下文章:
How to get a reference on the Itcl class member variable?
但它并没有说明如何将返回值作为特定的类类型变量来处理。
发布于 2018-08-10 15:47:18
您必须限定类A的尚未创建实例的名称。
A [namespace current]::#auto否则,所创建对象的名称将以不限定的方式返回(0、a0、.),不能将其解析为returnA调用方作用域的Tcl命令。
https://stackoverflow.com/questions/51781674
复制相似问题