Article View: comp.std.c++
Article #1421Re: C++ already *has* nested functions SO WHAT'S THE BEEF?
From: Fergus James HENDERSON
Date: Fri, 08 Jan 1993 00:39
Date: Fri, 08 Jan 1993 00:39
37 lines
2000 bytes
2000 bytes
harvey@opl.com (Harvey Reed) writes:
>If programmers want nested functions, it sounds a lot like delegation which
>C++ can handle quite well, as is. Just delegate to another object, or
>your self. This leaves matters fairly explicit.
Two points: firstly, I would not agree that C++ (without overloadable
operator dot) handles delegation well; secondly, delegation can be used
as a poor man's substitute for nested functions, but it does *not* have
the same power/expressiveness that nested functions do. The classic
sort of example where nested functions are useful is
somefunc(lots of complex parameters) {
lots of complex local variables;
int compare(const void *ptr1, const void *ptr2) {
const object *x = (object *)ptr1;
const object *y = (object *)ptr2;
// compare x and y using some complex ordering which is
// dependant on the above parameters and local variables
}
...
qsort(object_array, n, sizeof(object), compare);
...
}
Because the interface to qsort() is fixed, the alternative is to use a rather
ugly hack using global variables (well, ok, you can make them file-scope
static variables rather than real global variables). Here delegation doesn't
help.
--
Fergus Henderson fjh@munta.cs.mu.OZ.AU
This .signature virus is a self-referential statement that is true - but
you will only be able to consistently believe it if you copy it to your own
.signature file!
Technical Details
Message-ID:
<9300811.3521@mulga.cs.mu.OZ.AU>Path:
arc1-ca.pugleaf.net!sparky!uunet!munnari.oz.au!cs.mu.OZ.AU!munta.cs.mu.OZ.AU!fjhReferences:
<1992Dec21.080952.15309@netcom.com> <harvey.726175866@regina>Show Full Headers
Complete Article Headers
Newsgroups: comp.std.c++ Path: arc1-ca.pugleaf.net!sparky!uunet!munnari.oz.au!cs.mu.OZ.AU!munta.cs.mu.OZ.AU!fjh From: fjh@munta.cs.mu.OZ.AU (Fergus James HENDERSON) Subject: Re: C++ already *has* nested functions SO WHAT'S THE BEEF? Message-ID: <9300811.3521@mulga.cs.mu.OZ.AU> Keywords: nested functions, dumb ideas Sender: news@cs.mu.OZ.AU Organization: Computer Science, University of Melbourne, Australia References: <1992Dec21.080952.15309@netcom.com> <harvey.726175866@regina> Date: Fri, 8 Jan 1993 00:39:33 GMT Lines: 37