Hi All,
I am trying to implement the concept of function pointer in C++.
While compiling i got some errors which I couldnt figure out the reason .
So,Please let me know what changes should be done for resolving that error.
I am trying to execute one particular command function when the commandis pressed.Likewise, I have 100 commands and whenever the commands are pressed the corresponding function + arguements should be passed and the function pointer should execute the command.
Below are my code,
command.h
**********
#define FUNCPTR void *
#define MAX_NUM_COMMANDS 3
typedef struct
{
char command[LINELEN]; /* name of the command */
char parm1[LINELEN]; /*parameter 1 */
char parm2[LINELEN]; /*parameter 2 */
} ExeCmd_s;
class FunctionEntry
{
public:
char* commandString;
FUNCPTR pFun;
int SearchCommand(char* command);
};
FunctionEntry funArr[MAX_NUM_COMMANDS]=
{
{"aaa",(FUNCPTR)aaa},
{"bbb", (FUNCPTR)bbb},
{"ccc",(FUNCPTR)ccc}
};
enum commandName
{
aaa = 0,
bbb
};
command.c
**********
void void Execute ()
{
.........
.........
Execmd execmd;
FunctionEntry command;
int rc;
if(0 != SearchCommand(exeCmd.command))
{
command = FunctionEntry.SearchCommand(exeCmd.command);
switch((int)command.numOfArguements)
{
case Zero :
rc = ((command.pFun)();
break;
case one:
rc = ((command.pFun),exeCmd.parm1);
break;
}
}
else
{
printf("No match");
}
}
//Function to search and returns the index of the command
int FunctionEntry :: SearchCommand(char* command)
{
ExeCmd_s exeCmd; //already had a Structure where I am extracting the commandname..
int index = 0;
while(index < MAX_NUM_COMMANDS)
{
if(strcmp(exeCmd.command,funArr[index]) == 0)
{
return &funArr[index];
}
index++;
}
return NULL;
}
Please let me know where i should change the code.
Expecting some solutions for this code ASAP .
Thanks,
Sowmi