2013-07-16 38 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。 –

相關問題