Re: [LAD] again [ot] programming c++ problem (functions adresses)

From: Lars Luthman <lars.luthman@email-addr-hidden>
Date: Sun Jul 15 2007 - 22:03:34 EEST

On Sun, 2007-07-15 at 20:52 +0200, Julien Claassen wrote:
> Hi!
> Sorry to bother again. But I have the following problem I can't solve.
> I need to wrap some readline-code in my c++-class. Readline has some
> function-pointers you can set to a function you wrote yourself. So I did. The
> sinature of my function ALMOST matches that expected by readline, but it
> complains about the class part of my signature:
> my function:
> char** (Midish_rl::*)(const char*, int, int);
> Readline expects:
> char8* (*)(const char*, int, int);
> I tired writing a wrapper function, but for that I need some object, I just
> tried:
> char** wrapper(const char *text, int start, int end)
> {
> return my_ui.real_function(text,start,end);
> }
>
> The code is divided between a few files, so I couldn't just a a global
> object 'my_ui', which was known at all times.

If the Readline callback format does not have a parameter to pass user
data (which is a rather crappy design if that's the case) you have to
use a global variable of some sort. You can declare it 'extern' in a
header that you include in all files that need it, or make it a
singleton class with a static get_instance() member, or some similar
technique.

--ll

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo.cgi/linux-audio-dev

Received on Mon Jul 16 00:15:01 2007

This archive was generated by hypermail 2.1.8 : Mon Jul 16 2007 - 00:15:01 EEST