我必须在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);

07-24 09:37