博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++容器(vector|map)中使用函数指针
阅读量:6627 次
发布时间:2019-06-25

本文共 1035 字,大约阅读时间需要 3 分钟。

我要动态生成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:

转载于:https://www.cnblogs.com/greatverve/archive/2012/10/27/vector-ptr.html

你可能感兴趣的文章
【WebService】使用jaxb完成对象和xml的转换
查看>>
如何去除My97 DatePicker控件上右键弹出官网的链接 - 如何debug混淆过的代码
查看>>
多文档
查看>>
输入5个学生的信息(包括学号,姓名,英语成绩,计算机语言成绩和数据库成绩), 统计各学生的总分,然后将学生信息和统计结果存入test.txt文件中...
查看>>
BZOJ2337 [HNOI2011]XOR和路径
查看>>
C# 该行已经属于另一个表 ...
查看>>
android 避免线程的重复创建(HandlerThread、线程池)
查看>>
手游-放开那三国socket协议分析
查看>>
SQL Lazy Spool Eager Spool
查看>>
type的解释
查看>>
Windows Phone 8 开发环境搭建
查看>>
2017:IDC市场规模将持续增长 增速放缓
查看>>
从自动驾驶到学习机器学习:解读2017科技发展的15大趋势
查看>>
SinoBBD探索"一体化"大数据创新发展
查看>>
互联网金融带来新机遇 数据合规性不容忽视
查看>>
在Linux中永久并安全删除文件和目录的方法
查看>>
全民直播时代 内容监管还得靠技术
查看>>
10款Web开发最佳的Python框架
查看>>
c++ 类的对象与指针
查看>>
Boolean operations between triangle meshes
查看>>