In C++ for example, the following is valid: class A { private: int test(A a) { return n + a.n; } int n; };
The key point is the "a.n" is valid. I'm trying to create a 3d game in Racket, and in order to avoid recomputing world transforms all the time, child objects (say a rotatable gun on a parent tank) take a parameter to their parent which is used to add the child ("this") to the parent, in order that the parent update a delayed world transform computation in case of multiple calls to set-trans!, roughly: (define obj% (class object% (super-new) (init ... [parent #f]) (define p parent) (define cs '()) (when p (send p add-child! this)) (define/public (set-trans! new-t) ... <includes delayed world-trans calc> (for ([c cs]) (send c set-trans! (send c local-trans)))) ... (define/public/private/etc. (add-child! c) (set! cs (cons c cs))))) It obviously works with "define/public", but I'm hoping there is a way to not expose the method everywhere. It's in essence private, but Racket seems to not allow access even from within the class (send complains "no such method").
____________________ Racket Users list: http://lists.racket-lang.org/users