2013-07-16 33 views
1

在下面的示例中,我想在每个TradingStrategy(1-N).cpp文件中创建本地覆盖。有人能告诉我用C++实现这个最直接/最标准的方法吗?如何实现类变种虚拟函数覆盖

谢谢, 迈克

// TradingSide.h file 
class BuySide: public CTradingSide{ 
public: 
BuySide(CBMTTradingStrategy *p_Strategy, bool p_buySellSide, u32 p_spotInstIndex, u32 p_futInstIndex); 
~BuySide(); 
virtual void onQuoteBuyExit(u32 p_instIndex); 
virtual void onQuoteBuyEntry(u32 p_instIndex); 
virtual void onFIXBuyEntry(u32 p_orderIndex, bmt_eng_events_t p_orderEvent); 
virtual void onFIXBuyExit(u32 p_orderIndex, bmt_eng_events_t p_orderEvent); 
virtual inline bool isBuyEntryCriteriaSatisfied(bmt_price_t &p_spotCash, u32 &p_buySpotQty ); 
}; 

class SellSide: public CTradingSide{ 
public: 
SellSide(CBMTTradingStrategy *p_Strategy, bool p_buySellSide, u32 p_spotInstIndex, u32 p_futInstIndex); 
~SellSide(); 
virtual void onQuoteSellExit(u32 p_instIndex); 
virtual void onQuoteSellEntry(u32 p_instIndex); 
virtual void onFIXSellEntry(u32 p_orderIndex, bmt_eng_events_t p_orderEvent); 
virtual void onFIXSellExit(u32 p_orderIndex, bmt_eng_events_t p_orderEvent); 
virtual inline bool isSellEntryCriteriaSatisfied(bmt_price_t &p_spotCash, u32 &p_sellSpotQty ); 
}; 

// TradingStrategy1.h file 
class Trading1Class: public ParentClass{ 
... 
SellSide *mySellSide; 
BuySide *myBuySide; 
} 
// TradingStrategy1.cpp file 
Trading1Class::BuySide::onQuoteBuyExit(u32 p_instIndex) 
{ 
... 
} 

// TradingStrategy2.h file 
class Trading2Class: public ParentClass{ 
... 
SellSide *mySellSide; 
BuySide *myBuySide; 
} 
// TradingStrategy2.cpp file 
Trading1Class::BuySide::onQuoteBuyExit(u32 p_instIndex) 
{ 
... 
} 
+0

执行什么?如何编写执行交易交易的功能? –

+0

您可以在每个Trading(1-n)类中创建嵌套类,并且可以扩展BuySide/SellSide。 I.e:Trading1Class:public ParentClass {... class MySellSide:public SellSide {onQuoteBuyExit(u32 p_instIndex){...}}; }; –

+0

没有“局部重写”这样的东西,你不能为同一个方法编写不同的主体,但是在重新设计之后,它应该有可能实现你的目标(我认为虚拟方法将是最合适的)。 – Inspired

回答

0

有几种方法来做到这一点:

  1. 继承您的BuySide N级次和覆盖此处的方法。为不同的TradingStragegy使用不同的BuySide后代。

  2. BuySide移到父类中,使onQuoteByExit调用ParentClass的虚方法,并在子类中覆盖此虚方法。

  3. 将方法指针字段添加到BuyClass中,并将其指定给TradingNClass的构造函数。使用此字段可调用方法BuyClass中指定的方法。

我个人比较喜欢第二种方式。我想所有这些on*方法都应该由策略实现(重写),然后让它们在基类中更简单。

+0

伙计们,感谢您的反馈。我已经提出了建议的更改并选择了上面的选项2。 –

+0

伙计们,感谢您的反馈。我已经提出了建议的更改并选择了上面的选项2。 –

相关问题