c++ - 在 CArray 中赋值的简单方法

标签 c++ arrays windows struct mfc

我有很多数据必须输入到 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);

关于c++ - 在 CArray 中赋值的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796134/

相关文章:

c++ - 全局范围内变量和函数的递归依赖

ruby - 从 Ruby 中的对象数组中提取嵌套对象数组的最快方法是什么?>

c++ - sstream : No such file or directory

windows - 列出文件名和日期

ios - 从数组返回的属性创建常量

windows - TortoiseSVN 降级问题从 1.8 到 1.7

C++ Linux 多线程瓶颈。跟踪-f : `[pid 2646] mprotect(0x7ffe7c030000, 4096, PROT_READ|PROT_WRITE) = 0`

c++ - 数组元素是不完整的对象吗?

c++ - 密码程序建模-继承和其他OOP概念

python - 将 numpy.void 转换为 numpy.ndarray