VC++在结构体中加入CArray类型,CMap

定义结构体(必须以类的方式,添加构造函数)

//数据类型信息
struct TableField
{
    int source;//表示该字段的来源,0表示其他表(如SystemDevice),1表示本表(如SeaWave)
    CString tableName;
    CString field;
    CString alias;
};


 struct DataTypeInfo
{
	CString Table;//表名
	CString TableAlias;//表别名
	CString DeviceIDField;//设备表的DeviceID字段对应表的字段,(潮位和生态浮标两个表不一致)
	CString TimeField;
	CArray<TableField,TableField> FieldAlis;//这里不能添加,放在CMap中会出错???

	//CArray这个类没有提供拷贝函数,需要将DataTypeInfo定义成类,并完成相应的赋值与拷贝操作

	//默认构造函数不能少
	DataTypeInfo()
	{
	}

	//第二个构造函数
	DataTypeInfo(const DataTypeInfo& ca)
	{
		for(int i=0;i<ca.FieldAlis.GetSize();++i)
			FieldAlis.Add(ca.FieldAlis.GetAt(i));
	}

	DataTypeInfo& operator=(const DataTypeInfo& ca)
	{
		if(&ca==this)
			return *this;
		
		Table=ca.Table;
		TableAlias=ca.TableAlias;
		DeviceIDField=ca.DeviceIDField;
		TimeField=ca.TimeField;

		FieldAlis.RemoveAll();
		for(int i=0;i<ca.FieldAlis.GetSize();++i)
			FieldAlis.Add(ca.FieldAlis.GetAt(i));

		return *this;
	}
};

定义一个CMap引用定义的结构体

protected:
	//采用CArray和Struct方式	
	CMap<CString,LPCTSTR,DataTypeInfo,DataTypeInfo&> dataTypeInfo;//数据类型,表名,别名,对应的字段。第四个参数以&的方式,传地址
添加数据

	TableField tableField;
	//
	// 潮位
	DataTypeInfo sttInfoTide;//主要这个不可共用,因此安装地址传递的
	sttInfoTide.Table="DataReceive";
	sttInfoTide.TableAlias="潮位";
	sttInfoTide.DeviceIDField="PhoneNo";
	sttInfoTide.TimeField="DT";


	//来源-设备表
	tableField.source=0;
	tableField.tableName="SystemDevice";

	tableField.field="DeviceID";
	tableField.alias="设备ID";
	fieldAliasTide.Add(tableField);
	sttInfoTide.FieldAlis.Add(tableField);

	tableField.field="Location";
	tableField.alias="安装位置";
	fieldAliasTide.Add(tableField);
	sttInfoTide.FieldAlis.Add(tableField);
。。。。。
。。。。。
    //添加到CMap中
    dataTypeInfo.SetAt("TIDE",sttInfoTide);

//测试,引出
    DataTypeInfo tt;
    dataTypeInfo.Lookup("TIDE",tt);
---------



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值