社区
C语言
帖子详情
这个问题有点偏,呵呵:),可能也有点难!如何通过一个字符串来建立一个类的对象?
flyperson
2002-05-17 02:38:54
如何通过一个字符串来建立一个类?如下面:
String Button="File"; //定义一个字符串
Class CTest{
CTest();
............
} //定义一个类
我现在想创建一个CTest的对象,对象名为File,请问怎么做?能够这样做么:
CTest Button=new CTest();//创建对象,对象名为File
对谢!
...全文
49
21
打赏
收藏
这个问题有点偏,呵呵:),可能也有点难!如何通过一个字符串来建立一个类的对象?
如何通过一个字符串来建立一个类?如下面: String Button="File"; //定义一个字符串 Class CTest{ CTest(); ............ } //定义一个类 我现在想创建一个CTest的对象,对象名为File,请问怎么做?能够这样做么: CTest Button=new CTest();//创建对象,对象名为File 对谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
herohowk
2002-05-20
打赏
举报
回复
#define MyCreateClass((class),(name)) #class #name
flyperson
2002-05-20
打赏
举报
回复
呵呵,up
flyperson
2002-05-20
打赏
举报
回复
没人清楚吗?如果真的没人,我今晚结帖吧:)
flyperson
2002-05-20
打赏
举报
回复
谢谢各位的帮助!:),但是还有点问题。
lanzhengpeng2(兰征鹏):呵呵,我没有说清楚。在你的程序中有这样一句话TestClass * p= (TestClass *)CreateClass("TestClass");,我的希望的问题是我有一个字符串String *str="p",我怎么由这个"p"来生成你程序中的*p,就象宏替换一样,但要求是在程序运行中实现这个功能。
visualtree(梦想依旧):你的方法可行,但不好:)。如果用过Foxpro的人应该知道Foxpro里面有一个行替换的功能,我要实现的就是这种行替换的功能。
各位工作愉快!
flyperson
2002-05-20
打赏
举报
回复
问题没搞定,就此吧,谢
flyperson
2002-05-20
打赏
举报
回复
提贴!
flyperson
2002-05-20
打赏
举报
回复
herohowk():能否清楚点?:)多谢
zheng_can
2002-05-17
打赏
举报
回复
我觉得他所要求的并不是动态生成
可能 visualtree(梦想依旧) 才最满足题目的要求
只是实现方法有点不好,有待改进
陈硕
2002-05-17
打赏
举报
回复
请看侯捷先生的《多型与虚拟》第二版,第六章,网上有免费试读。
visualtree
2002-05-17
打赏
举报
回复
为什么不用map呢
map<string,baseclass &> mapClass;
typedef map<string,baseclass &>::const_iterator CI;
for(CI p=mapClass.begin();p!=mapClass.end();++p)
{ switch(p->first)
{
case class1name:
p->second()=new class1;
break;
case ....
}
}
lanzhengpeng2
2002-05-17
打赏
举报
回复
反过来考虑就好了,每个类有个名称,有个跟名称一样的名字,并且可以可以根据名字唯一确定一个名称。
这样做,你需要个类工厂的东西,能够注册类(包括类的创建器和名称),创建类。
下面是一个最简单的Example:
class RTTIBASE;
void RegisterClass(RTTIBASE * );
void * CreateClass(const char * name);
class RTTIBASE
{
friend void RegisterClass(RTTIBASE * );
friend void * CreateClass(const char * name);
RTTIBASE * next;
public:
const char * name;
virtual void * CreateObj() = 0;
RTTIBASE(const char * s) : next(NULL),name(s)
{
RegisterClass(this);
}
};
template<class T>
class RTTIIMPL : public RTTIBASE
{
virtual void * CreateObj()
{
return new T;
}
public:
RTTIIMPL(const char * s)
:RTTIBASE(s)
{
}
};
RTTIBASE * g_RTTIHeader = NULL;
void RegisterClass(RTTIBASE * rtti)
{
if(g_RTTIHeader)
g_RTTIHeader->next = rtti;
else
g_RTTIHeader = rtti;
}
void * CreateClass(const char * name)
{
RTTIBASE * p = g_RTTIHeader;
while(p)
{
if(!strcmp(name,p->name))
return p->CreateObj();
p = p->next;
}
return NULL;
}
#define RTTI_DECLARE( Name )\
friend class RTTIIMPL< Name >;\
static RTTIIMPL< Name > sm_ThisRTTI;
#define RTTI_IMPLEMENT(Name)\
RTTIIMPL< Name > Name::sm_ThisRTTI(#Name)
class TestClass
{
public:
int m_i;
RTTI_DECLARE(TestClass);
};
RTTI_IMPLEMENT(TestClass);
int main(int argc, char* argv[])
{
TestClass * p = (TestClass *)CreateClass("TestClass");
return 0;
}
flyperson
2002-05-17
打赏
举报
回复
能不能够马上给我一个example呢?小点就行
flyperson
2002-05-17
打赏
举报
回复
kary(BCBuider回复):是啊,BCBuilder里是怎么做的?我知道用new创建一个VCL控件,:)。怎么跟数据库中的记录对应起来呢
谢谢
kary
2002-05-17
打赏
举报
回复
我说他题意不清。
其实他也就要一个能存盘的,然后读取得时候重新将所有的数据读回来。
用VC的动态创建吧。
flyperson
2002-05-17
打赏
举报
回复
shizumaru(绯雨闲丸):是动态生成,只是还没有看过MFC:)。我采用C++ builder作工程。
swingerleung(大盗C++):从数据库中读出来的记录是字符串呢。比如:退出按钮的记录为:"Exit",按钮上的标签为"退出系统",我能够把这个字符串"Exit"作为对象名吗?呵呵
swingerleung
2002-05-17
打赏
举报
回复
做一个Struct如何?
Struct里有两个成员:
一是指向对象的指针,二是对象的名.
用的时候建一个该Struct的数组存放这些资料
SHIZUMARU
2002-05-17
打赏
举报
回复
你好象是想做动态生成吧?看深入浅出MFC(第二版)第三章。
flyperson
2002-05-17
打赏
举报
回复
在作应用时,我想把我的应用界面上的VCL组件(包括属性)全部放到放到一个数据库中,在程序运行时从数据库中读取控件名来动态的创建界面,如按钮阿、菜单阿。。。。。。:)。:)
Stephen_Ma
2002-05-17
打赏
举报
回复
不行不行。
kary
2002-05-17
打赏
举报
回复
怪!题意不清+
加载更多回复(1)
Python 47个
字符串
方法
如果是,来学学本课程吧,本课程以讲解官网文档的方式,讲解 Python 47个
字符串
方法,涉及替换、删除、连接、查找、分割、格式化、编码、转换等
字符串
操作,带同学们系统学习 Python
字符串
方法。 &...
python
字符串
和切片操作
去掉
字符串
数组中每个
字符串
的空格(循环) 1.去掉
字符串
中所有的空格 我们可以适用replace(m,n)方法来实现去掉
字符串
中的所以的空格 下面是代码实现 // 将
字符串
中所有的空格删除 s=' This is a demo ' print(s....
C++
字符串
完全指南
C++
字符串
完全指南 - Win32字符编码(一) 前言
字符串
的表现形式各异,象TCHAR,std::string,BSTR等等,有时还会见到怪怪的用_tcs起头的宏。...即使你已经知道
字符串
是
一个
字符的数组这样的概念,也请阅读本
没头没尾--项目开发笔记:工具能生成多少代码!?
标题:没头没尾--项目开发笔记:工具能生成多少代码!?关键词:分布式开发 C# 项目分工 ...当然,可以将代码的生成与同步写在同
一个
工程项目中。如果有充分时间进行考虑的话,那么我们的代码工具也的确是应该包含在一
JAVA笔试考点分析一(
字符串
)
要知道
字符串
类
型在面试笔试中可是必出的题目哦,呵呵,所以当然要掌握好它嘛,下面写的是我的一些个人的想法,希望可以和大家一起交流,错误地方一定要指出和批评哦。 看下面程序: public class StringTest { ...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章