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