@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,多多包涵!