解决VC6无法为STL的for_eash绑定函数内部类的问题

本文介绍了解决VC6环境下无法直接为STL的for_each绑定函数内部类的问题。通过创建两个全局基类及派生类,并利用多态机制实现遍历vector容器的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VC6里无法为STL的for_eash绑定函数内部类,貌似因为for_eash用到了模板, 而当时版本的模块只能支持全局类。

 

解决如下:

#include <iostream>
#include <vector>
#include <algorithm>


using namespace std;


#define AUTO_CLASS_COUNT 

template<class _T>
struct bass_fun
{
	virtual void operator()(_T& _p)
	{
		cout<<"old "<<_p<<endl;
	}
};

template<class _T>
struct bind_fun
{
	bind_fun(bass_fun<_T>* _fun)
	{
		m_fun = _fun;
	}
	virtual void operator()(_T& _p)
	{
		(*m_fun)(_p);
	}
	bass_fun<_T> *m_fun;
};


void main()
{
	vector<int> m_v_viewboxmgr;
	for(int i=0; i<10; i++)
		m_v_viewboxmgr.push_back(i);
	
	struct Fun:public bass_fun<int>
	{
		virtual void operator()(int& _p)
		{
			cout<<"new "<<_p<<endl;
		}	
	};
	Fun fun;
	for_each(m_v_viewboxmgr.begin(), m_v_viewboxmgr.end(), bind_fun<int>(&fun));
	system("pause");

}


通过两个全局类和函数的多态机制绕开模板只支持全局类的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值