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

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice