您的位置:首页 > 运维架构 > Linux

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

2014-10-27 20:55 555 查看
//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 function

funcEntryPoint 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: