# file: runme.tcl # This file illustrates the high level C++ interface. # In this case C++ classes work kind of like Tk widgets catch { load ./example[info sharedlibextension] example} # ----- Object creation ----- puts "Creating some objects:" Circle c 10 puts " Created circle [c cget -this]" Square s 10 puts " Created square [s cget -this]" # ----- Access a static member ----- puts "\nA total of $Shape_nshapes shapes were created" # ----- Member data access ----- # Set the location of the object c configure -x 20 -y 30 s configure -x -10 -y 5 puts "\nHere is their current position:" puts " Circle = ([c cget -x], [c cget -y])" puts " Square = ([s cget -x], [s cget -y])" # ----- Call some methods ----- puts "\nHere are some properties of the shapes:" foreach o "c s" { puts " [$o cget -this]" puts " area = [$o area]" puts " perimeter = [$o perimeter]" } # ----- Delete everything ----- puts "\nGuess I'll clean up now" # Note: this invokes the virtual destructor rename c "" rename s "" puts "$Shape_nshapes shapes remain" puts "Goodbye"