100分求教反射问题

Elever 2004-06-25 10:07:05
C++可以实现反射吗??
如果可以
该怎么实现??
给出方案,经测试后立即给分
谢谢
...全文
205 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
北极猩猩 2004-06-28
  • 打赏
  • 举报
回复
实际上反射就是在对象的运行期为对象添加可查询的类型信息。
比如,MFC里面的反射实现是通过宏将这些元数据信息作为对象的一个静态属性添加到对象里
而.net和java是通过编译器和runtime来完成元数据的管理和插入的
Wolf0403 2004-06-26
  • 打赏
  • 举报
回复
在一个类型体系框架内使用注册机制就可以做到。不论 MFC, .net 还是 Java 都是这样的。
nscboy 2004-06-26
  • 打赏
  • 举报
回复
不知道C++Bulder是怎样实现的.
sandrowjw 2004-06-25
  • 打赏
  • 举报
回复
你必须在编译期知道每一个类的类型信息。
一种变通的方法是用Entity-Property类来模拟,把成员函数、成员变量都作为Property挂上去,但实际上功能和性能都很勉强,还不如用注册表和正确地设计类的层次关系。
ibelieveicandie 2004-06-25
  • 打赏
  • 举报
回复
不支持反射。但是可以通过注册每一个类的方法模拟实现。
yjh1982 2004-06-25
  • 打赏
  • 举报
回复
汗~~不是叫你用MFC,而是参考它的做法呀.
qwertasdfg123 2004-06-25
  • 打赏
  • 举报
回复
忘了

#include <iostream>
using namespace std;
qwertasdfg123 2004-06-25
  • 打赏
  • 举报
回复
不知道如下可不可以:
// WIN2000 VC6
#define CREATECLASS(type, name) typedef struct tag##name { type i; } name


int main()
{

CREATECLASS(int,myclassname);
myclassname m;
m.i=10;
cout << m.i << endl;
return 0;
}
qwertasdfg123 2004-06-25
  • 打赏
  • 举报
回复
你说的反射应该是RTTI吧。
Elever 2004-06-25
  • 打赏
  • 举报
回复
MFC是一套框架啊
要把它挪到Linux下太恼火了

难道除了MFC就没有别的办法实现了吗?
yjh1982 2004-06-25
  • 打赏
  • 举报
回复
原理不一样么.C++本身不支持
Elever 2004-06-25
  • 打赏
  • 举报
回复
你说的实dynamic的宏吧
问题是它其实不能算C++的实现方案
在linux下使用面向对象的思想
如何搞?
yjh1982 2004-06-25
  • 打赏
  • 举报
回复
那就是了嘛
Elever 2004-06-25
  • 打赏
  • 举报
回复
简言之,给出类名,产生对应类的实例
qwertasdfg123 2004-06-25
  • 打赏
  • 举报
回复
MFC是消息反射。
楼主说的反射是指。。。。。。?
yjh1982 2004-06-25
  • 打赏
  • 举报
回复
MFC好象就是.
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复标识为 “代码味道”,但我们大多数都已经学会忍受它。能不能不写重复的dao 呢 ? 泛型dao,顾名思义就是一个dao可以对多个实体对象进行持久化。当应用中需要使用到上十张表时,DAO的维护变得日益困难,主要表现在这几个方面: 1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名和方法名) 2)dao接口需要维护的method庞大。 3)业务逻辑改变时,dao需要同时修改两个类文件(接口和实现类) 在本文中,我将为您展示如何避免再三地重复 DAO 代码。 在这里我建议项目最好使用一个共通的DAO,因为这样会为你省去非常多的类,而那些类里的逻辑往往差不多。当然是用共通的DAO你需要对结果转型,转成你需要的bean,但这也比写那么多DAO强多了,你可以放下包袱,只关注你的业务逻辑。 如果你真能只用一个dao解决,那么祝贺你,你得到了一个虚拟数据层(高度抽象的数据接口)。这是一个比dao更高级的存在。 欢迎大家指正 -_- 虚心求教 代码层次: bean-->dao-->service-->action 技术概述:1.继承 继承是利用现有的类创建新类的过程,现有的类称作基类(或父类),创建的新类称作派生类(子类)。继承其实就是自动地共享基类中成员属性和成员方法的机制。引入继承,实现了代码重用; 2.泛型 泛型类型的限定 3.反射 代码概述: bean :Person.java 这个人员类我就不说了 泛型dao接口 :GenericDao 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 findByNameExact()方法 子类的附加方法。 泛型daoimpl :GenericDaoImpl implements GenericDao 必须提供的构造方法,以便创建实例的时候就知道具体实体的类型。 daoimpl :PersonDAOImpl extends GenericDaoImpl implements PersonDAO public PersonDAOImpl() { super(Person.class); } 告诉对哪个类操作,如不需要自定义扩展方法就作有一个构造方法。 泛型Service:GenericService.java 与泛型dao没有区别 Service :PersonService.java 直接继承。 泛型serviceimpl与serviceimpl实现和dao层实现一样。 Action : SavePersonAction直接调用PersonService。 下面是代码 为了演示减少代码量而且直观去掉些方法方便读者自己扩展写出适合自己的代码,这里我只抛砖引玉了。主要介绍这个技术。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zylyueliang/archive/2010/09/17/5890043.aspx
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复标识为 “代码味道”,但我们大多数都已经学会忍受它。能不能不写重复的dao 呢 ? 泛型dao,顾名思义就是一个dao可以对多个实体对象进行持久化。当应用中需要使用到上十张表时,DAO的维护变得日益困难,主要表现在这几个方面: 1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名和方法名) 2)dao接口需要维护的method庞大。 3)业务逻辑改变时,dao需要同时修改两个类文件(接口和实现类) 在本文中,我将为您展示如何避免再三地重复 DAO 代码。 在这里我建议项目最好使用一个共通的DAO,因为这样会为你省去非常多的类,而那些类里的逻辑往往差不多。当然是用共通的DAO你需要对结果转型,转成你需要的bean,但这也比写那么多DAO强多了,你可以放下包袱,只关注你的业务逻辑。 如果你真能只用一个dao解决,那么祝贺你,你得到了一个虚拟数据层(高度抽象的数据接口)。这是一个比dao更高级的存在。 欢迎大家指正 -_- 虚心求教 代码层次: bean-->dao-->service-->action 技术概述:1.继承 继承是利用现有的类创建新类的过程,现有的类称作基类(或父类),创建的新类称作派生类(子类)。继承其实就是自动地共享基类中成员属性和成员方法的机制。引入继承,实现了代码重用; 2.泛型 泛型类型的限定 3.反射 代码概述: bean :Person.java 这个人员类我就不说了 泛型dao接口 :GenericDao 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 findByNameExact()方法 子类的附加方法。 泛型daoimpl :GenericDaoImpl implements GenericDao 必须提供的构造方法,以便创建实例的时候就知道具体实体的类型。 daoimpl :PersonDAOImpl extends GenericDaoImpl implements PersonDAO public PersonDAOImpl() { super(Person.class); } 告诉对哪个类操作,如不需要自定义扩展方法就作有一个构造方法。 泛型Service:GenericService.java 与泛型dao没有区别 Service :PersonService.java 直接继承。 泛型serviceimpl与serviceimpl实现和dao层实现一样。 Action : SavePersonAction直接调用PersonService。 下面是代码 为了演示减少代码量而且直观去掉些方法方便读者自己扩展写出适合自己的代码,这里我只抛砖引玉了。主要介绍这个技术。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zylyueliang/archive/2010/09/17/5890043.aspx

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧