gpt4 book ai didi

c++ - 如何为类变量实现虚函数覆盖

转载 作者:太空宇宙 更新时间:2023-11-04 14:04:19 24 4
gpt4 key购买 nike

在下面的示例中,我想在每个 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 )
{
...
}

最佳答案

有几种方法可以做到这一点:

  1. 从您的 BuySide 类继承 N 次并覆盖此处的方法。对不同的 TradingStragegy 使用不同的 BuySide 后代。

  2. BuySide移动到父类中,使onQuoteByExit调用ParentClass的一个虚方法并覆盖这个虚方法在后代中。

  3. BuyClass 中添加一个方法指针字段,并将其分配给 TradingNClass 的构造函数。使用此字段从 BuyClassonQuoteByExit 方法调用它指向的方法。

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

关于c++ - 如何为类变量实现虚函数覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com