我必须在CArray中输入许多数据,其中哪个元素是结构如下
CArray<structCtrlField, structCtrlField> aryDefTab1CtrlField;
structCtrlField sCtrlField1 = {CTRL_FIELD_ORDER_ERROR, _T(CTRL_FIELD_NAME_ERROR),
_T(CTRL_FIELD_CODE_ERROR), 0};
theApp.aryDefTab1CtrlField.Add(sCtrlField1);
structCtrlField sCtrlField2 = {CTRL_FIELD_ORDER_ACTIVE, _T(CTRL_FIELD_NAME_ACTIVE),
_T(CTRL_FIELD_CODE_ACTIVE), 0};
theApp.aryDefTab1CtrlField.Add(sCtrlField2);
我试着
theApp.aryDefTab1CtrlField[0] = {CTRL_FIELD_ORDER_ERROR, _T(CTRL_FIELD_NAME_ERROR),
_T(CTRL_FIELD_CODE_ERROR), 0};
theApp.aryDefTab1CtrlField[2] = {CTRL_FIELD_ORDER_ACTIVE, _T(CTRL_FIELD_NAME_ACTIVE),
_T(CTRL_FIELD_CODE_ACTIVE), 0};
但是编译器无法运行它...
如何定义aryDefTab1CtrlField?
最佳答案
您没有显示structCtrlField
的声明,但是我假设它是这样的(无论如何您都会有主意的):
struct structCtrlField
{
CString szOne;
CString szTwo;
CString szThree;
int nNum;
};
然后将成员函数添加到该结构以允许您设置字段:
struct structCtrlField
{
CString szOne;
CString szTwo;
CString szThree;
int nNum;
void Set(LPCTSTR sz1, LPCTSTR sz2, LPCTSTR sz3, int n1)
{
// set members
szOne = sz1;
szTwo = sz2;
szThree = sz3;
nNum = n1;
}
};
然后,使用示例代码,可以像这样设置新值:
theApp.aryDefTab1CtrlField[0].Set(CTRL_FIELD_ORDER_ERROR,
_T(CTRL_FIELD_NAME_ERROR),
_T(CTRL_FIELD_CODE_ERROR),
0);