В приведенном ниже примере я хотел бы создать локальные переопределения в каждом файле .CPP TradingStrategy (1-N). Может ли кто-нибудь сказать мне самый простой/стандартный способ реализовать это в C++?Как реализовать переопределение виртуальных функций для классов vars
Спасибо, Майк
// 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-n) классов и вместо этого использовать BuySide/SellSide. I.e: Trading1Class: public ParentClass {... class MySellSide: public SellSide {onQuoteBuyExit (u32 p_instIndex) {...}}; }; –
Существует не такая вещь, как «локальное переопределение», и вы не можете писать разные тела для одного и того же метода, но после некоторой перепроектировки это должно стать возможным для достижения вашей цели (я думаю, что виртуальные методы будут лучше всего подходят). – Inspired