Ask Function problem?thanks
-
Ask Function problem?thanks <<<<<<<<<>>>>>>>>> #pragma once class Class { public: int get_return(int a,int b,int (*compare)()); int Rxgmoral(int a,int b); void Fun(); }; <<<<<<<<>>>>>>> #include "Stdafx.h" #include "Class.h" int Class::get_return(int a,int b,int(* compare)()) { return (compare(a,b)); } int Class::Rxgmoral(int a, int b) { return a+b; } void Class::Fun() { int a; a=get_return(1,2,&Rxgmoral); } error: e:\mystudio\project\test\test\class.cpp(6) : error C2197: 'int (__cdecl *)(void)' : too many arguments for call e:\mystudio\project\test\test\class.cpp(17) : error C2276: '&' : illegal operation on bound member function expression thanks:)
-
Ask Function problem?thanks <<<<<<<<<>>>>>>>>> #pragma once class Class { public: int get_return(int a,int b,int (*compare)()); int Rxgmoral(int a,int b); void Fun(); }; <<<<<<<<>>>>>>> #include "Stdafx.h" #include "Class.h" int Class::get_return(int a,int b,int(* compare)()) { return (compare(a,b)); } int Class::Rxgmoral(int a, int b) { return a+b; } void Class::Fun() { int a; a=get_return(1,2,&Rxgmoral); } error: e:\mystudio\project\test\test\class.cpp(6) : error C2197: 'int (__cdecl *)(void)' : too many arguments for call e:\mystudio\project\test\test\class.cpp(17) : error C2276: '&' : illegal operation on bound member function expression thanks:)
I think you should try this:
// Class.h #pragma once class Class { public: int get_return(int a, int b, int (*compare)(int, int)); static int Rxgmoral(int a, int b); void Fun(); }; // // Class.cpp #include "Stdafx.h" #include "Class.h" int Class::get_return(int a, int b, int(* compare)(int, int)) { return compare(a, b); } int Class::Rxgmoral(int a, int b) { return a + b; } void Class::Fun() { int a; a = get_return(1, 2, Rxgmoral); }
I hope it helps.
-
Ask Function problem?thanks <<<<<<<<<>>>>>>>>> #pragma once class Class { public: int get_return(int a,int b,int (*compare)()); int Rxgmoral(int a,int b); void Fun(); }; <<<<<<<<>>>>>>> #include "Stdafx.h" #include "Class.h" int Class::get_return(int a,int b,int(* compare)()) { return (compare(a,b)); } int Class::Rxgmoral(int a, int b) { return a+b; } void Class::Fun() { int a; a=get_return(1,2,&Rxgmoral); } error: e:\mystudio\project\test\test\class.cpp(6) : error C2197: 'int (__cdecl *)(void)' : too many arguments for call e:\mystudio\project\test\test\class.cpp(17) : error C2276: '&' : illegal operation on bound member function expression thanks:)
rxgmoral wrote:
int get_return(int a,int b,int (*compare)());
get_return has second parameter as 'pointer to a function taking nothing returning int'.
rxgmoral wrote:
a=get_return(1,2,&Rxgmoral);
where as you are trying here to pass address of member function again having different signature. Modified code should look like this
#pragma once
class Class
{
public:
int get_return(int a,int b,int (Class::*compare)(int,int));//watch declaration of pointer
int Rxgmoral(int a,int b);
void Fun();
};int Class::get_return(int a,int b,int(Class::*compare)(int,int))
{
return ((this->*compare)(a,b));
}int Class::Rxgmoral(int a, int b)
{
return a+b;
}void Class::Fun()
{
int a;
a=get_return(1,2,Rxgmoral);//no need to pass address(&)
}