怎么从文本生成对象?

胖和尚minifat 2003-09-13 03:04:22
我现在想从一个文本生成一系列对象。文本的内容包括了对象的名字和属性名字,类型,属性值。由于对象类型和属性都比较多。。。不知道该怎么写这个程序,还望热心人帮忙。
...全文
36 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
heartup 2003-09-16
  • 打赏
  • 举报
回复
还有呀:你在文本中给出对象的名字是没有意义的.因为你在程序中根本无法使用这个名字(应为你根本无法预料用户输入什么样的名字).
heartup 2003-09-16
  • 打赏
  • 举报
回复
class Base {};

class T1 :public Base{
T1(int d) : data(d) {}
static T1* create(int d) { T1(d); }
int data;
};

class T2 :public Base{
T2(int d) : data(d) {}
static T2* create(int d) { T2(d); }
int data;
};

class MainT :public Base{
MainT() {}
static MainT* create() {}
T1* pdata1;
T2 data2;
};

typedef struct {
char name[MAX];
Base* (*pFun)();
}ClassCreateNode;

ClassCreateNode a[3] = {{"T1",T1::create},
{"T2",T2::create},
{"MainT",MainT::create}};

void main(){
/*输入顺序为主类型名,属性类型名,属性值...*/
char Tn[MAX];
int data;

scanf("%s",Tn);
Base* (*pFun)(void) = FindCorrespondFun(Tn);
Base* myObject = pFun();


scanf("%s",Tn);
Base* (*pFun)(void) = FindCorrespondFun(Tn);
scanf("%d", data);
myObject->pdata1 = (*pFun)(data);


scanf("%s",Tn);
Base* (*pFun)(void) = FindCorrespondFun(Tn);
scanf("%d", data);
myObject->data2 = *(pFun(data));

}

这只是大致的样子了.自己可以再细细修改.当然VC中并不是这样子的,那要复杂的多的多.
heartup 2003-09-16
  • 打赏
  • 举报
回复
这其实就是VC中DynamicCreate(动态生成)的思想:根据类型名生成对象.VC中的做法是:
在内存中织出一张巨大的网,网的节点为(类型名,生成此类型对象的函数指针)
根据输入的类型名你可以查找网中相应的节点,根据伴随的函数指针生成对象.
函数指针其实就是,此类型的一个静态函数,在静态函数内部调用构造函数.

先根据输入的第一个类型名生成一个空对象,然后再生成各个属性(其实也是对象,也用此种方法生成).
limd 2003-09-16
  • 打赏
  • 举报
回复
如果是给对象实例赋值,倒好办哟
zzwu 2003-09-14
  • 打赏
  • 举报
回复
你首先要为你的对象建立一个类,在其中定义对象所需要的属性和方法。
然后就是编写一个程序,来反复引用上面这个类来产生对象实例,并从文本文件中读出数据,将它们依次赋给这个实例(作为它的属性)就行了.

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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