当前位置: 首页 > news >正文

dw如何用表格做网站阿里云学生服务器购买

dw如何用表格做网站,阿里云学生服务器购买,南京的网站建设公司哪家好,漯河网站建设哪家前几天写的类对象反射机制太烦锁了,今天写个修改版的,精简为两个类 一个是类的数据结构,另一个是类的父类对象,把所有操作类的方法都写到父类中 1.类的信息结构体 struct Field_Node {TCHAR m_name[20]; //字段名称TCHAR m_typeName[20]; // 字段类型名称size_t m_typeHashC…前几天写的类对象反射机制太烦锁了,今天写个修改版的,精简为两个类 一个是类的数据结构,另一个是类的父类对象,把所有操作类的方法都写到父类中 1.类的信息结构体 struct Field_Node {TCHAR m_name[20]; //字段名称TCHAR m_typeName[20]; // 字段类型名称size_t m_typeHashCode; //字段数据类型的哈希值size_t m_typeOffs; //字段偏移量 }; 字段信息结构不再添加其他方法了,就只为保存字段信息数据 2.父类QObject class QObject { public:QObject(){}virtual ~QObject(){}public://静态方法获取子类对象,直接New一个子类对象就好了templatetypename Tstatic QObject* CreateObject(){retrun new T();}//纯虚函数获得子类的字段信息数组地址virtual const Field_Node* GetSubClassFieldNode()const0;//设置类对象的字段数据templatetypename Tvoid Set_Value(const TCHAR* strFieldName, const T inValue){//调用子类的,获得其静态的字段信息数组地址const Field_Node* pFieldGetSubClassFieldNode(); //循环查找字段名称并给其赋值while(pField-m_typeHashCode!0){if(lstrcmp(pField-m_name,strFieldName)0){if(pField-m_typeHashCode!typeid(T).hash_code()){assert(false 数据类型不匹配,检查字段数据类型和输入的数据类型是否一致!!!);return;}//设置字段的值*((T*)((unsigned char*)stu pField-m_typeOffs))inValue;return;}pField;}//end while}//获得字段数据void Get_Value(const TCHAR* strFieldName, T outValue){//调用子类的,获得其静态的字段信息数组地址const Field_Node* pFieldGetSubClassFieldNode(); //循环查找字段名称并给其赋值while(pField-m_typeHashCode!0){if(lstrcmp(pField-m_name,strFieldName)0){if(pField-m_typeHashCode!typeid(T).hash_code()){assert(false 数据类型不匹配,检查字段数据类型和输入的数据类型是否一致!!!);return;}//获取字段的值outValue*((T*)((unsigned char*)stu pField-m_typeOffs));return;}pField;}//end while}};这样就能对子类对象的字段进行数据操作了 3.下面是类的注册宏,在其内就重写一个父类的虚函数就搞定了, //类内声明宏 #define REGISTER_CLASS_NAME()\ public:\ const Field_Node* GetSubClassFieldNode()const//类外实现宏 #define BEGIN_REGISTER_FILEDS_NAME(class_name)\ const Field_Node* class_name::GetSubClassFieldNode()const{\ typedef class_name thisClass;\ static const Field_Node thisClass##Field_Node[]{\ //结束宏 #define END_REGISTER_FILEDS_NAME()\ {TEXT(),TEXT(),0,0}};return thisClass##Field_Node[0];}//添加字段信息结构宏 #define ADD_FIELD_NAME(fName,fType)\ {TEXT(#fName),TEXT(#fType),typeid(fType).hash_code(),(size_t)((thisClass*)0)-fName},\//TEXT(#fName) 字段名称(变量的名称,name,sex) //TEXT(#fType) 数据类型名称(int ,bool) //(size_t)((thisClass*)0)-fName 字段的偏移量 //typeid(fType).hash_code() 获得数据类型的哈希值,用来比较数据类型是否相同 4.用法就更加简单了, class Student :public QOBject{ REGISTER_CLASS_NAME() public:Student(){}~Student(){} public:int id;CString name;CString sex;UINT age; };BEGIN_REGISTER_FILEDS_NAME(Student)ADD_FIELD_NAME(id, int)ADD_FIELD_NAME(name, CString)ADD_FIELD_NAME(sex, CString)ADD_FIELD_NAME(age, UINT) END_REGISTER_FILEDS_NAME()//测试函数中//通过父类的静态方法获取子类New的对象 //用父类指针来操作子类对象进行赋值,获取值等操作 QOject* pObjQObject::CreateObjectStudent();//给对象赋值 pObj-Set_Value(TEXT(id),123); pObj-Set_Value(TEXT(name),CString(TEXT(张三))); pObj-Set_Value(TEXT(sex),CString(TEXT(男))); pObj-Set_Value(TEXT(id),(UINT)33);//获取对象字段的值 Student s; pObj-Get_Value(TEXT(id),s.id); pObj-Get_Value(TEXT(name),s.name); pObj-Get_Value(TEXT(sex),s.sex); pObj-Get_Value(TEXT(id),s.age);//最后操作完可转化子类对象指针 Student *pStu(Student*)pObj; 总结一下是不是比前面[写的简单多了,也容易弄懂, 其实关键是获取子类的结构信息,用纯虚函数就能调用子类的静态字段结构数组, 也就相对简单了,
http://www.ho-use.cn/article/10817074.html

相关文章:

  • 有哪些免费的ppt模板下载网站wordpress是英文的怎么办
  • 网站设计与管理论文dt模板网
  • 做网站代理网站开发后端语言有哪些
  • 网站建设微站网络优化app哪个好
  • 网站seo检测合肥网络推广培训
  • 南昌网站建设怎么样建设纺织原料网站
  • 淄博网站建设找李光明已经有域名 怎么修改网站
  • 广州做网站代理商免费网站收录提交
  • 做网站linux主机wordpress注册填写密码
  • 做网站即墨用仿网站做优化有效果吗
  • 赤峰网站制作公司上海专业做网站推广的公司
  • 怎样做有效的黄页网站甘肃网站快速排名策划
  • 电子商务网站建设经费沈阳工程建设信息网
  • 本地网站做哪方面吸引人樱花动漫做网站
  • 淘宝客模板网站专业建设网站哪家好
  • 景区加强网站建设腾讯云免费域名申请
  • 电商网站 模板广东省造价工程信息网
  • 中山优化网站电商商城平台定制
  • 上海本地生活的网站wordpress破解密码
  • 积极做好门户网站建设工作网站地图页面设计
  • 怎么做单页网站导航东莞企业网站建设方案
  • 四川省住房和城乡建设厅网站域名网站建设可行性报告模板
  • vue配合什么做网站比较好网站上的动图都怎么做的
  • 深圳专业做网站设计国内网站设计经典案例
  • 新区seo整站优化公司广西工商网站查询企业信息
  • 做国内网站花费门户网站建设自查报告
  • 站长之家html做网站会被捉吗
  • 网站开发的硬件环境网站上的图片怎么替换
  • 在网盘上怎么做自己的网站全案营销策划
  • 广州网站建设-信科分公司邯郸做网站费用