Jeff..... In a more-or-less "pure" OO language like Ruby (or Smalltalk), you don't have to go through all those gyrations that C++ (and other languages that added OO after the fact) forced us to use. You just add a method to the existing object because classes are first-class objects. Cool, eh? On Dec 27, 2005, at 5:40 PM, Jeff Cohen wrote: > Given an object, is there a clean way of creating a new object that > wraps the original and then adds a new method? > > It doesn't have to wrap the old object if there's a way to directly > add > a new method to the object (I'm allowed to change the incoming > object). > > def extend_it(obj) > > # how do I add a method to obj > # or create a wrapper for it? > > return obj #or new_obj that quacks like obj, has obj data, and also > has extra method > > end > > In my C++ days I would create a class that derives from the original > class, extends it with a new method, and defines a copy constructor to > copy the state of the original object. > > Thanks > Jeff > > -- > Posted via http://www.ruby-forum.com/. > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. -.-.-.-.-.-.-.-.-.-.-.-.-.-.- Dan Shafer Technology Visionary - Technology Assessment - Documentation "Looking at technology from every angle" http://www.eclecticity.com