请教关于利用模板函数保存类信息、创建类的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 SS2000
  • 开始时间 开始时间
S

SS2000

Unregistered / Unconfirmed
GUEST, unregistred user!
具体是这样的,我在做一个股票分析软件,涉及到股票指标的计算的显示,我做了
一个股票指标的显示类。但是每种指标的算法都不一样,所以我把算法封装成了一个
算法类(接口),那么股票显示类就只要调用算法接口就可以了,不同的指标显示只要
替换了算法类就可以,显示类就不必修改任何代码,在替换算法类的时候,我用了一个
模板函数,
function CreateCalculateClass(iType: integer): TCalculateClass;
参数类型是一个整数,然后一个大case语句

case iType of
1: result := TCalculateClass1.Create;
2: result := TCalculateClass2.Create;
3: result := TCalculateClass3.Create;
end;

现在的问题是,我想做另一个模板函数,利用类的指向
procedure RegisteCalculateClass(ACalculateClass:TCalculateClass;iType: integer);
把类的信息注册到程序里面保存起来,这样,CreateCalculateClass就不必在用case语句了,
更重要的是,在程序其他地方,我还需要知道有多少指标类,以便在菜单中自动显示,
现在只能手工改动相应的地方。
但是如何做RegisteCalculateClass,如何保存类信息,以便在CreateCalculateClass和
其他地方使用,没有思路,各位能否指点一二。
 
具体是这样的,我在做一个股票分析软件,涉及到股票指标的计算的显示,我做了
一个股票指标的显示类。但是每种指标的算法都不一样,所以我把算法封装成了一个
算法类(接口),那么股票显示类就只要调用算法接口就可以了,不同的指标显示只要
替换了算法类就可以,显示类就不必修改任何代码,在替换算法类的时候,我用了一个
模板函数,
function CreateCalculateClass(iType: integer): TCalculateClass;
参数类型是一个整数,然后一个大case语句

case iType of
1: result := TCalculateClass1.Create;
2: result := TCalculateClass2.Create;
3: result := TCalculateClass3.Create;
end;

现在的问题是,我想做另一个模板函数,利用类的指向
procedure RegisteCalculateClass(ACalculateClass:TCalculateClass;iType: integer);
把类的信息注册到程序里面保存起来,这样,CreateCalculateClass就不必在用case语句了,
更重要的是,在程序其他地方,我还需要知道有多少指标类,以便在菜单中自动显示,
现在只能手工改动相应的地方。
但是如何做RegisteCalculateClass,如何保存类信息,以便在CreateCalculateClass和
其他地方使用,没有思路,各位能否指点一二。
 
看VC是怎么做的
 
看了,VC里没有,真不好意思,不能给你加分了
 
不是的吧,我记得深入浅出MFC的第三章说了的啊,可以参考一下的!
 
C++中没有类指向这种类型呀。
 
你可以参考RegisterClass/GetClass的实现.具体的示例代码就没有必要了
 
还是学习一下吧
真的不会
要是我估计会从外部的文件读
 
后退
顶部