C delegate to C++ -


i have small problem using library gets images cmos camera. library permits use stream functionality , have 3 access point set (three delegates) when image, when image dropped , when there error.

typedef void(* streamcallbackptr)( image *image ); typedef void(* streamerrorcallbackptr)(); typedef void(* streamframedroppedcallbackptr)();  int stream_start( device device, imageformat format, streamcallbackptr  stream_callback, streamframedroppedcallbackptr  f_dropped_callback, streamerrorcallbackptr  error_callback ); 

i enter streamcallbackptr image ready on camera, keep in mind not have ways of changing library code.

and here question: how plug own delegate in c++ ? lets use stream functionality inside class, know have @ least 2 options; wrapper, , global variables. first 1 seems compromised since cannot pass else image, , want avoid using global variables (it static members in case).

any ideas ?

you use static member function streamcallbackptr can access private static reference or list of references c++ delegates wish receive message.

that way have hidden of details private class.

the code below pseudo-c++ (i haven't checked properly) should give idea of suggesting.

class delegate { protected:     void callback( image *image ) = 0;     void error() = 0;     void framedropped() = 0;  public:     static void setdelegate(delegate* d) { delegateinstance = d; }         static void staticcallback( image *image)     {            // invoke delegate instance         if (delegateinstance != nullptr) delegateinstance->callback();      }        // same others...  private:     static delegate* delegateinstance = nullptr; };  class myclass : public delegate { protected:     void callback( image *image )     {            // callback in delegate instance     }    };  int main(void) {     myclass mc;      delegate::setdelegate(&mc);      streamcallbackptr scp = &delegate::staticcallback;     // register other static callbacks...      return 0; } 

Comments

Popular posts from this blog

matlab - Deleting rows with specific rules -

php - MySQLi multi_query results for later use -