orr@cs.glasgow.ac.uk (Fraser Orr) (06/10/88)
Sorry if this is a simple question with an obvious answer, but can anybody tell
me the type of a function taking a function as paramter.
For example, say I have a list class, and I want to have a member function that
performs some function on all the elements of the list ...
class List {
SomeType Data [ SomeSize ] ;
public:
.
.
.
void Iterator ( void fn ( SomeType ) ) ;
end ;
the line `void Iterator ( void fn ( SomeType ) ) ;' gives a syntax error.
Any ideas?
==Fraser Orr ( Dept C.S., Univ. Glasgow, Glasgow, G12 8QQ, UK)
UseNet: {uk}!cs.glasgow.ac.uk!orr JANET: orr@uk.ac.glasgow.cs
ARPANet(preferred xAtlantic): orr%cs.glasgow.ac.uk@nss.cs.ucl.ac.ukark@alice.UUCP (06/12/88)
In article <1340@crete.cs.glasgow.ac.uk>, orr@glasgow.UUCP writes: > class List { > SomeType Data [ SomeSize ] ; > public: > . > . > . > void Iterator ( void fn ( SomeType ) ) ; > end ; > > the line `void Iterator ( void fn ( SomeType ) ) ;' gives a syntax error. First of all, I presume you meant to say }; instead of end; Either that or you have some nasty preprocessor macros. Anyway, your problem is a long standing bug in cfront. This bug is extremely hard to fix. Nevertheless, I believe it will be fixed in a future release of cfront. THe way to circumvent it is to use typedef: typedef void void_func_SomeType (SomeType); // . . . void iterator (void_func_sometype* fn); Don't forget the * -- you can't pass functions as arguments, only pointers to functions.