续:关于数据与算法独立抽象的问题!

zhangleipolo 2004-06-22 08:56:48
感谢大家对我问题的解答。通过多态性和虚函数我实现了接口的统一。但,现在引入了一个新的问题,就是这些算法在实际应用过程中,并不是单一的,有可能会组合在一起。举个例子:当根据算法一无解,便需要进一步用算法二进一步去计算。
请问如果提出这种需求的对应解决方法有什么?请给个思路,多谢大家!!

=================================================================
原问题:
问题大概是这样的:系统中,需要实现某种特定的运算。而运算中针对不同的情况,定义了几种对应的数据结构struct,大体相同,略有出入。根据情况的不同,也就是数据结构的不同,则有相应的算法(运算过程)。现在的问题就是这样,如何抽象出接口,以实现算法和数据的独立性。并在以后运用的过程中,当出现新的情况时,可以比较灵活的在已有的接口上,设计新的数据结构并实现特定算法。
说了这么多,不知道说清楚没有。小弟总感觉千言万语在胸中,却就是没法用一种很清晰的设计来实现这种需求,恳请各位大虾指点迷津!!谢谢!

...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangleipolo 2004-06-23
  • 打赏
  • 举报
回复
我看了一篇文章:利用C++模板技术支持多种计算策略——孟岩。里面的原型我感觉和我差不太多(稍有出入,它的数据结构一致)。他在给出利用模版技术解决问题的方法之前,先利用多态性给出了解决方法,不过文章指出这样其实有几个缺点。因为不结合实际例子倒也说不清楚,我就不费口舌了。所以最后给出了模版Policy方案的解决方法。不知道你对这种解决方法有什么建议?多谢!
kaphoon 2004-06-23
  • 打赏
  • 举报
回复
class C: public A,B{

public:
void CAlog()//改为void Alog()
{
A::Algo();
B::Algo();

}
这样更好
zhangleipolo 2004-06-22
  • 打赏
  • 举报
回复
多谢!等我仔细想想,看究竟是否适合!明天再向你请教!
kaphoon 2004-06-22
  • 打赏
  • 举报
回复
#include<iostream>
#include<cstdlib>
using namespace std;

class Base{
public:
virtual void Algo()=0;
};

class A:public Base
{
public:
void Algo(){cout<<" A "<<endl;}
};

class B:public Base
{
public:
void Algo(){cout<<" B "<<endl;}
};

class C: public A,B{

public:
void CAlog()
{
A::Algo();
B::Algo();

}
};
int main()
{
C c;
c.CAlog();
system("pause");
} //给你个思路,就是用多重继承
qwertasdfg123 2004-06-22
  • 打赏
  • 举报
回复
学习

64,634

社区成员

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

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