# Example using pointers to member functions if [ catch { load ./member_pointer[info sharedlibextension] Member_pointer} err_msg ] { puts stderr "Could not load shared object:\n$err_msg" } proc check {what expected actual} { if {$expected != $actual } { error "Failed: $what , Expected: $expected , Actual: $actual" } } # Get the pointers set area_pt [ areapt ] set perim_pt [ perimeterpt ] # Create some objects set s [Square -args 10] # Do some calculations check "Square area " 100.0 [do_op $s $area_pt] check "Square perim" 40.0 [do_op $s $perim_pt] set memberPtr $areavar set memberPtr $perimetervar # Try the variables check "Square area " 100.0 [do_op $s $areavar] check "Square perim" 40.0 [do_op $s $perimetervar] # Modify one of the variables set areavar $perim_pt check "Square perimeter" 40.0 [do_op $s $areavar] # Try the constants set memberPtr $AREAPT set memberPtr $PERIMPT set memberPtr $NULLPT check "Square area " 100.0 [do_op $s $AREAPT] check "Square perim" 40.0 [do_op $s $PERIMPT]