jeff@seas.gwu.edu (Jeff Schilling) (03/22/90)
Howdy, I have a class defined with a member that is a function pointer,
like this:
class foo {
int (*keytest)(void *,void *)
.
.
public:
foo();
};
The idea is to have a pointer to a comparison function a la [str,mem]cmp
to perform a comparison.
The problem: I am using Zortech C++ 2.0 and in my constructor, I say
foo() { keytest = &strcmp; }
The compiler complains with a message of
ZTCPP1 -oc:temp.tmp idxcoll
keyTest = &strcmp;
^
"idxcoll.cpp", line 13 Syntax error: type mismatch
Had: <near *><near C++ func(<near *><void>,<near *><void>) returning><int>
and: <near *><near C func(<near *><char>,<near *><char>) returning><int>
--- errorlevel 1
My question is, is the compiler complaining about the C++ versus C function
type, or the arguments?
The Zortech reference manual states that "both the arguments and return
type must exactly match those of the function pointer _EXACTLY_"
So, what will it be? Thanx in advance.
jeff
+---------------------------------------------------------------------------+
| Jeff Schilling School of Engineering Computing Facility |
| jeff@seas.gwu.edu George Washington University |
| uunet!gwusun!jeff Washington, DC 20009 |
| (201) 994-6853 |
| System Programmer |
+---------------------------------------------------------------------------+bright@Data-IO.COM (Walter Bright) (03/23/90)
In article <1686@sparko.gwu.edu> jeff@seas.gwu.edu (Jeff Schilling) writes:
< int (*keytest)(void *,void *)
<The problem: I am using Zortech C++ 2.0 and in my constructor, I say
< keytest = &strcmp;
<The compiler complains with a message of
<ZTCPP1 -oc:temp.tmp idxcoll
< keyTest = &strcmp;
< ^
<"idxcoll.cpp", line 13 Syntax error: type mismatch
<Had: <near *><near C++ func(<near *><void>,<near *><void>) returning><int>
<and: <near *><near C func(<near *><char>,<near *><char>) returning><int>
strcmp is prototyped in string.h as:
int cdecl strcmp(char *,char *);
This does not match your function pointer declaration. Hence the
error message. Change the declaration of keytest to match:
int (cdecl *keytest)(char *,char *);