當我運行我(專有的)代碼,我得到這樣的:TCL OO產量沒有指向對象
info object isa class DlgClass is:1 DlgClass does not refer to an object while executing "::oo::Obj6::my Set DlgClass" ("uplevel" body line 1) invoked from within "uplevel 1 [list [namespace which my] Set $args]" (class "::oo::Slot" method "-set" line 2) invoked from within "::oo::Obj6::my --default-operation DlgClass" ("uplevel" body line 1) invoked from within "uplevel 1 [list [namespace which my] $def {*}$args]" (class "::oo::Slot" method "unknown" line 6) invoked from within "superclass DlgClass" (in definition script
代碼的兩行(1,其產生的消息,並前面的那個)是:
puts "info object isa class DlgClass is:[info object isa class DlgClass]"
superclass DlgClass
我不明白。第一行輸出(info object isa class DlgClass is:1
之一)是否表明超類的確定了?
TclOO定義命令非常關心當前堆棧幀是什麼。我不記得'源'是否會影響到它,但它可能會。我必須檢查... –
另外,類需要在可以使用之前創建,並且在查找類時不會嘗試支持調用'unknown'命令處理程序,所以懶惰的定義不會輕鬆工作。但是,如果你願意,你可以懶惰地做他們方法的定義; 'oo :: define'命令就是這個工具(並且'未知'方法也可能是相關的)。 –