mfc中在vector里添加控件类型的数据时出现C2248错误

@mfc中在vector里添加控件类型的数据时出现C2248错误

这是我在.h文件中定义的2个容器

public:
	vector<CComboBox*> cbx;
	vector <CString> table1;

在对应cpp文件中初始化的方法

	//注意以下6行在出错前我没有加上 而且下面cbx.push_back我放的都是控件类型
	/*错误原因:MFC控件都继承自CObject类,这种类的对象不能被拷贝。
	作为函数参数传递时,实际上是把控件变量拷贝了一份传递给函数了,导致编译错误。*/
	//解决方法:用对应指针变量接收控件变量把控件变量放进容器中,所以可以看到.h中的容器类型已经改为			CComboBox*
	CComboBox* p_cbx_1=&cbx_1;
	CComboBox* p_cbx_2=&cbx_2;
	CComboBox* p_cbx_3=&cbx_3;
	CComboBox* p_cbx_4=&cbx_4;
	CComboBox* p_cbx_5=&cbx_5;
	CComboBox* p_cbx_6=&cbx_6;
	
	cbx.push_back(p_cbx_1);
	cbx.push_back(p_cbx_2);
	cbx.push_back(p_cbx_3);
	cbx.push_back(p_cbx_4);
	cbx.push_back(p_cbx_5);
	cbx.push_back(p_cbx_6);
	
	//table1不需要看 因为CString没有标题中的错误
	table1.push_back(TEXT("1"));
	table1.push_back(TEXT("2"));
	table1.push_back(TEXT("3"));
	table1.push_back(TEXT("4"));
	table1.push_back(TEXT("5"));
	table1.push_back(TEXT("6"));
	
	//这里是用遍历把所有下拉框控件都添加同一组数据(即table1)
	for (int i=0;i<6;i++)
	{
		
		for (vector<CString>::iterator it=table1.begin();it!=table1.end();it++)
		{
			//这里的cbx[i]还是一个指针,所以要再加*取出地址对应变量,此时才是CComboBox变量
			(*(cbx[i])).AddString(*it);
		}
		(*(cbx[i])).SetCurSel(i);
	}

第一次写csdn,多多包涵!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值