函数指针的两个简单用法

/*************************************************************************
	> File Name: func.cpp
	> Author: yangjx
	> Mail: yangjx@126.com 
	> Created Time: Sat 15 Dec 2018 12:28:19 PM CST
 ************************************************************************/

#include<stdio.h>
#include<iostream>
#include<vector>
using namespace std;

//one---------------------------------------------------
void myprint(int a)
{
	printf("func==>%d\n", a);
};

template<typename FUNC, typename V>
void test(FUNC func, V v )
{
	func(v);
}

//two-----------------------------------------------------

class A
{
	public:
		A();
		void Handle();

	private:
		typedef void (*MYPRINT2)(int a);

		struct SPR
		{
			int v;
			MYPRINT2 p2;
		};
		void reg(int v, MYPRINT2 p2);

	private:
		std::vector<SPR> _vecspr;
};

void A::Handle()
{
	for(std::vector<SPR>::iterator it = _vecspr.begin(); it != _vecspr.end(); ++it)	
	{
		it->p2(it->v);
	}
}

void A::reg(int v, MYPRINT2 p2)
{
	SPR spr;
	spr.v = v;
	spr.p2 = p2;
	_vecspr.push_back(spr);
}


void myprint2(int a)
{
	printf("func2==>%d\n", a);
}

void myprint3(int a)
{
	printf("func3==>%d\n", a);
}

A::A()
{
	reg(1000, myprint2);
	reg(1003, myprint3);
}



int main()
{
	test(myprint, 10);

	//--
	A a;
	a.Handle();
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值