Note that there are some explanatory texts on larger screens.

plurals
  1. POAvoiding a static member function in c++ when using a callback interface from C
    text
    copied!<p>I would like to access the data within this member function that is static. Right now the member function is static so that I can use it with a third party API written in C that has typdef function pointer for callback purposes. Based on the info below, what is the best way to get around the need to create a static function in order to use the data from the following function member within other member functions of my class that are non-static. Maybe there is a way to still use this static function but still overcome the inability to mix static with non-static variables. My code does works as is but with no ability to access the data in the following callback function.</p> <pre><code>void TextDetect::vtrCB(vtrTextTrack *track, void *calldata) /*acts as a callback*/ { /*specifically would like to take data from "track" to a deep copy so that I don't loose scope over the data withing that struct */ } </code></pre> <p>In an associated API written in C, there are the following two lines of code that I am forced to use:</p> <pre><code> typedef void (*vtrCallback)(vtrTextTrack *track, void *calldata); int vtrInitialize(const char *inifile, vtrCallback cb, void *calldata); </code></pre> <p>Here is the header of my class:</p> <pre><code> #include &lt;vtrapi.h&gt; #include &lt;opencv.hpp&gt; class TextDetect { const char * inifile; vtrImage *vtrimage; int framecount; public: TextDetect(); ~TextDetect(); static void vtrCB(vtrTextTrack *track, void *calldata); int vtrTest(cv::Mat); bool DrawBox(cv::Mat&amp;); }; TextDetect::TextDetect() : inifile("vtr.ini") { if (vtrInitialize(inifile, vtrCB /*run into problems here*/, NULL) == -1) std::cout &lt;&lt; "Error: Failure to initialize" &lt;&lt; std::endl; vtrimage = new vtrImage; framecount = 0; } void TextDetect::vtrCB(vtrTextTrack *track, void *calldata) /*acts as a callback*/ { /*specifically would like to take data from "track" to a deep copy so that I don't loose scope over the data withing that struct */ } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload