1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Reg Fucntion Pointers

Discussion in 'C++' started by sowmi, Jun 27, 2007.

  1. sowmi

    sowmi New Member

    Joined:
    Jun 20, 2007
    Messages:
    6
    Likes Received:
    0
    Trophy Points:
    0
    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,

    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
     

Share This Page