class Cooperate{
virtual do();
};class CooperateAB: public Cooperate{
virtual do()
{
a.opA();
b.opB();
}
};class CooperateCB: public Cooperate{
virtual do()
{
c.opC();
b.opB();
}
};
virtual do();
};class CooperateAB: public Cooperate{
virtual do()
{
a.opA();
b.opB();
}
};class CooperateCB: public Cooperate{
virtual do()
{
c.opC();
b.opB();
}
};
解决方案 »
- win32汇编的问题:用DialogBoxParam建立的对话框,无法收到wm_keydown,wm_char之类的消息,怎么回事呢。
- 求助!!!!!!!!!!!!!!!
- **问个小问题,我写的一个查看图片的小程序,在拉动滚动条的时候,发现图片闪动得非常得厉害,不知道该怎么样解决这个问题啊!**
- 获取网页上的图像
- 怎样使菜单灰显???
- 怎样向vc界面中插入图片?
- 初次编程,请教一个菜鸟问题:)
- MFC的dll问题
- 如何将8位灰度图象转为4位灰度图象
- 请问有什么工具可以看到dll文件中的内容,比如提供的接口函数等等!
- 怎样恢复用SystemParametersInfo禁止的屏保?急!!!!
- 除了mfc外,vc++还可以调用ado吗????????????????
{
if (某些条件)return new CooperateAB();
else return new CooperateCB();
.....
}
用State模式
WhiteWaterBlueSky不要着急,我的问题还没完。
如果我希望这个操作clsMain只实现一次,不用改变,新加入的类(clsA一个级别的)来实现,这样可以减少clsMain同clsA级别的类的耦合。我该如何办理?
{
public: virtual void do();
};class A: public Base{
public:
virtual void do(){ this->do(); b->do(); }
}class B: public Base{
public:
virtual void do(){ this->do(); c->do(); }
}class clsMain
{
public:
void doByControlOf(Base *b)
{
b->do();
}
}
{
public: virtual void do();
};class Cooperate
{
public: virtual void cooperate();
}class A: public Base, Cooprate{
public:
virtual void cooperate(){ this->do(); b->do(); }
void do(){ printf("a");}
}class B: public Base, Cooperate{
public:
virtual void cooperate(){ this->do(); c->do(); }
void do(){ printf("b");}
}class clsMain
{
public:
void doByControlOf(Cooperate *b)
{
b->cooperate();
}
}