在下面的示例中,我想在每个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)
有几种方法可以做到这一点:
从您的BuySide
班级继承N次,并在此处覆盖方法。对不同的BuySide
使用不同的TradingStragegy
后代。
将BuySide
移动到父类中,使onQuoteByExit
调用ParentClass
的虚方法,并在后代中覆盖此虚方法。
将方法指针字段添加到BuyClass
并在TradingNClass
的构造函数中指定它。使用此字段从onQuoteByExit
的{{1}}方法调用其指向的方法。
我个人更喜欢第二种方式。我想所有这些BuyClass
方法都应该由策略实现(覆盖),然后将它们放在基类中更简单。