3

QuickFix に Python バインディングを使用する場合、Python で MessageStoreFactory クラスをどのようにサブクラス化しますか?

これを試みると、オブジェクトは MessageStoreFactory として「見えません」:

NotImplementedError: Wrong number of arguments for overloaded function  'new_SocketInitiatorBase'.
  Possible C/C++ prototypes are:
FIX::SocketInitiator(FIX::Application &,FIX::MessageStoreFactory &,FIX::SessionSettings const &)
FIX::SocketInitiator(FIX::Application &,FIX::MessageStoreFactory &,FIX::SessionSettings const &,FIX::LogFactory &)

このエラーは、型が間違っている場合に SWIG によって返されるようです。(私は過去に Boost しか使用したことがありません。Python での C++ クラスのサブクラス化は SWIG でも可能ですか?)

更新され た Python バインディングは、Ubuntu 12.04 用にパッケージ化されたものです。エラーが発生するのは、SocketInitiator を作成するときに、QuickFix オブジェクトの 1 つを以下のオブジェクトと交換した場合に限られるため、引数が正しいと確信しています。

class TestStoreFactory(quickfix.MessageStoreFactory):
    def __init__(self):
        logging.info("TestStoreFactory()")

    def create(self, sessionId):
        logging.info("Create %s"%sessionId)

    def destroy(self, messageStore):
        logging.info("Destroy %s" % messageStore)
4

1 に答える 1

2

基本クラスのコンストラクターを呼び出すことで、この問題を回避しました。

class TestStoreFactory(quickfix.MessageStoreFactory):
    def __init__(self):
        quickfix.MessageStoreFactory.__init__(self)
        logging.info("TestStoreFactory()")
于 2013-10-25T15:53:32.367 に答える