Я полагаю, что так работает itcl, если вы посмотрите на спецификацию для класса:
itcl::class className {
inherit baseClass ?baseClass...?
constructor args ?init? body
destructor body
method name ?args? ?body?
proc name ?args? ?body?
variable varName ?init? ?config?
common varName ?init?
public command ?arg arg ...?
protected command ?arg arg ...?
private command ?arg arg ...?
set varName ?value?
array option ?arg arg ...?
}
className objName ?arg arg ...?
objName method ?arg arg ...?
className::proc ?arg arg ...?
вы можете видеть, что приватный / защищенный может применяться к команде, но не к строителю или деструктору. Просмотр здесь документации по шаблонам проектирования itcl также может дать некоторые подсказки о том, как достичь чего-то близкого к частному конструктору.