473,654 Members | 3,103 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

GLUT callback registration (not quite OT)


Hi all. I'm having trouble registering a GLUT callback function.
glutIdleFunc wants a void(*)() function as argument, and I believe
that's what I've given it, but gcc complains with the following message:

GraphicDisplay. cpp:15: error: no matches converting function `DrawC' to
type `void (*)()'
GraphicDisplay. hpp:11: error: candidates are: void GraphicDisplay: :DrawC()

Can anyone see what I'm missing here?

//---begin code:

class GraphicDisplay
{
public:
void Init();
void DrawC();
};

void GraphicDisplay: :Init()
{
// Standard GLUT init stuff...
// (snip)
glutIdleFunc( GraphicDisplay: :DrawC );
}

void GraphicDisplay: :DrawC()
{
// some code...
}

//---end code.

Jul 19 '05 #1
1 3137
"Martin Magnusson" <lo*******@frus tratedhousewive s.zzn.com> wrote in message
news:bj******** **@green.tninet .se...
GraphicDisplay. cpp:15: error: no matches converting function `DrawC' to
type `void (*)()'
GraphicDisplay. hpp:11: error: candidates are: void GraphicDisplay: :DrawC()
Glut is a C library, and it expects a pointer to a C function.
So you cannot pass a non-static member function to it.

What will probably work is to replace: void DrawC();

with:
static void DrawC();

But yes, this will force you to use global variables (DrawC will not
be able to access non-static member variables of class GraphicDisplay.
Note that, in theory, you also need to add an extern "C"
in front of the function's declaration (this is to formally
follow the standard, but this is rather rarly used in such
a context...)

hth,
--
http://www.post1.com/~ivec <> Ivan Vecerina
Jul 19 '05 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
5506
by: Steven Gutstein | last post by:
I've just managed to get PyOpenGL installed on a Windows NT machine. I've tried testing it using one of the programs supplied with the PyOpenGL download - molehill.py. On my machine, it was placed in the python23\Lib\site-packages\OpenGL\Demo\GLUT\examples directory. When I'm in Windows Explorer and double click on the icon for this program, it runs fine. However, when I try to 'execfile' molehill from the Python command line, I have...
8
3767
by: Ash | last post by:
Hello all, I am hoping this is the appropriate newsgroup for a C++ interface design question. I am trying to design an interface for a subscriber to register/deregister handlers for various events. The callbacks specified by the subscriber will be called when the events get trigerred in a different thread. Each event has different kinds of data associated with it. To achieve this I have the following: // The following describes the...
0
2193
by: Bushido Hacks | last post by:
What's that? I've go GCC working for Windows? Well, sort of. But I'm not using a Unix Emulator. The trick is to install Dev-C++, but do not use the Dev-C++ IDE unless you feel like it. I don't use it because I have grow so accustom to using Linux. (GCC rox!) I find GCC to be good because of its simplicity.
11
2461
by: ajay.sonawane | last post by:
Hello ther I read somewhere that callback function should be global or static member function. 1: I could use static member functions but how could I access members of class which ar not static. 2: I could use global function but want to access members of class. Let me know the possible solutions. Regards, Ajay Sonawane
5
14292
by: Michael Kipper | last post by:
Hi, I'm having a problem moving from C to C++. In C, I have a function: void display(void) {} that I can register with OpenGL as a callback using: GLUTAPI void glutDisplayFunc( void (GLUTCALLBACK *func)(void) )
4
5398
by: Dmitri Sologoubenko | last post by:
Hi, guys! I need a C++ class (Linux/POSIX/GNU C++), which can be started and stopped, and calls a virtual callback instance method (e.g. "expired()") when a given time has elapsed. High resolution means that expire time should be measured in microseconds, or at least in milliseconds. I had a look on Gnu C <sys/time.h>'s functions getitimer and setitimer, but these all use a signal (SIGALRM) to notify expiration, and I don't know the...
6
7666
by: smmk25 | last post by:
Before I state the problem, I just want to let the readers know, I am knew to C++\CLI and interop so please forgive any newbie questions. I have a huge C library which I want to be able to use in a .NET application and thus am looking into writing a managed C++ wrapper for in vs2005. Furthermore, this library has many callback hooks which need to be implemented by the C++ wrapper. These callback functions are declared as "extern C...
1
2550
Airslash
by: Airslash | last post by:
Hello, I'm trying to make a simpel renderengine that allows me to draw objects and 3D models. To make it cross-platform i'm working with the glut library supplied by OpenGL. This library requires callback methods to be set for rendering and eventhandeling. The header of my engine looks like this : class RenderDevice { public: RenderDevice(int width, int height, char* const caption);
0
1725
by: shortyzms | last post by:
I have been trying to write a small glut program that uses popup context menus on right clicks to draw objects. However, every time I do this, the area underneath the submenu item I clicked does not refresh. Here's a helpful test program I've found from Mindf**k's glut tutorial... #include <iostream> #include <GL/glut.h> #include <cstdlib> using namespace std; void createMenu(void);
0
8814
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8706
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8475
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8591
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
5621
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4149
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
4293
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2709
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1915
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.