c++容器(vector|map)中使用函數指針


我要動態生成mfc菜單,動態綁定響應命令。
首先把菜單關鍵詞和函數指針綁定在map中,
再通過關鍵詞找到函數來執行。
#include  " stdafx.h "

#include <vector>
#include <map>
#include < string>

using  namespace std;

//  聲明一個函數指針
int(*pFunc)( int);
int func1( int nIn){ return nIn +  1;}
int func2( int nIn){ return nIn +  20;}

typedef  int(*pInt)( int); // 定義別名才能放在vector中

void main()
{
    pFunc = func1; //  把函數名賦給函數指針
     int n = pFunc( 1);
    pFunc = &func2;
    n = pFunc( 1);
     // vector<int(*pFun)(int)> v_pFunc; // 不能這樣定義
    
//
    vector<pInt> v_pInt;
    v_pInt.push_back(func1);
    v_pInt.push_back(func2);
     int i = v_pInt[ 0]( 2);
    i = v_pInt[ 1]( 2);
     //
    map< string,pInt> map_pInt;
    map_pInt.insert(pair< string,pInt>( " key1 ",func1));
    map_pInt.insert(pair< string,pInt>( " key2 ",func2));
     int j = map_pInt[ " key1 "]( 3);
    j = map_pInt[ " key2 "]( 3);
}
20121028更正vector可以直接放函數指針類型,沒理解到位。
// vector只能放類型,不能放函數指針變量名
vector< int(*)( int)> v_pFunc;
v_pFunc.push_back(func1);
v_pFunc.push_back(func2);
int k = v_pFunc[ 0]( 5);
k = v_pFunc[ 1]( 5);
url: http://greatverve.cnblogs.com/archive/2012/10/27/vector-ptr.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM