在运行时C ++

问题描述 投票:0回答:1
当您播放磨机时

当您玩它时,播放两次

当这些升级中之一应用于卡片播放功能时,这些升级应与PlayFunction()

PlayFunction(){ formerPlayFunction() millCard() }
  • 我怎么能实现? 我试图用lambda函数来完成,该功能可以通过升级来修改,但似乎不是更好的选择。
  • 启动一个结构
Effect

体现了播放卡的结果:

class Effect {
  virtual ~Effect() {}
  virtual void apply(context * ctx, Card & card) = 0;
};

卡片对象存储A

std::vector<unique_ptr<Effect>>

。 最初,此效果只是卡片的默认评分效果:

c++ function runtime
1个回答
0
投票

DefaultEffect
可能看起来像这样:

class DefaultEffect : public Effect {
  virtual void apply(context * ctx, Card & card) {
     ctx->score += card.value;
  }
};

制造效果对象而不是普通功能指针可以使您产生状态效果。例如,“每次播放此卡的价值都会上升一个”或“只能使用5次效果”。

上面建议的loop loop只是为了入门,您可以通过从
for

中返回有意义的东西来使事情变得像您想要的复杂(例如,代价值可以停止处理效果或实际重新启动效果)
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.