[linux,c++] 使用指针函数实现多个函数调用

来源:互联网 发布:比较好的java入门书籍 编辑:程序博客网 时间:2024/05/02 01:08

//g++ -o funcEntry funcEntry.hpp funcEntry.cpp

#include <iostream>#include <string>#include <map>#ifndef FUNCENTRY_HPP__#define FUNCENTRY_HPP__enum LEVEL_TYPE{LEVEL_SYSTEM = 0 ,LEVEL_PROGRAMMER ,LEVEL_ORDINARY} ;typedef int (*funcEntryPoint) ( char *)  ; //define the pointer function ,we also name it the entry address of functionfuncEntryPoint getFuncEntryPointByType  ( LEVEL_TYPE type ); //we send different enum type value ,and get target function entry int systemLevelEntryPoint               ( char * ) ; //send LEVEL_SYSTEM ,get systemLevelEntryPoint function entry int programmerLevelEntryPoint           ( char * ) ; //send LEVEL_PROGRAMMER ,get programmerLevelEntryPoint pointer function int ordinaryLevelEntryPoint             ( char * ) ; //after getting function entry point , we can regard it as the function itself #endif


#include "funcEntry.hpp"using namespace std ;funcEntryPoint getFuncEntryPointByType ( LEVEL_TYPE type ){        switch ( type )        {        case LEVEL_SYSTEM :                return systemLevelEntryPoint ;        case LEVEL_PROGRAMMER :                return programmerLevelEntryPoint  ;        case LEVEL_ORDINARY:                return ordinaryLevelEntryPoint ;        default :                cout<<"error type " ;                return NULL ;        }}int systemLevelEntryPoint ( char * line ){        cout<<" system "<<endl ;        cout<<line<<endl ;        return 0 ;}int programmerLevelEntryPoint ( char *line ){        cout<<"programmer"<<endl ;        cout<<line<<endl ;        return 0 ;}int ordinaryLevelEntryPoint ( char *line ){        cout<<"ordinary"<<endl ;        cout<<line<<endl ;        return 0 ;}int main ( int argc , char * argv[] ){        funcEntryPoint entryFunc ;        entryFunc = getFuncEntryPointByType ( LEVEL_SYSTEM) ;//we get systemLevelEntryPoint function entry         entryFunc("i am system level function !") ;//we use function entry just like use the method itself        entryFunc = getFuncEntryPointByType ( LEVEL_PROGRAMMER ) ;        entryFunc("i am programmer level function !") ;        entryFunc = getFuncEntryPointByType ( LEVEL_ORDINARY ) ;        entryFunc("i am ordinary user level function !") ;        return 0 ;}                                                         



in the next section , we will implement a more complex function entry point test  ,

on base of this 


//coding  me 

0 0
原创粉丝点击