से फ्रीग्ल में कॉलबैक फ़ंक्शन मैं ओपनजीएल का उपयोग करने के लिए एमएसवीसी ++ और फ्रीग्लूट का उपयोग कर रहा हूं। अब, मेरे पास Camera
नामक एक वर्ग है, जो कि बहुत आसान है, लेकिन यह मेरी खिड़की के पुनः आकार के लिए भी कार्य करता है।ऑब्जेक्ट
मेरा प्रश्न है: मैं अपने कैमरे में अपने फ़ंक्शन में glutReshapeFunc(void (*callback)(int,int))
कैसे सेट कर सकता हूं?
मैं निम्नलिखित कोड है, जो काम नहीं करेगा, एक संकलक त्रुटि के कारण:
int main(int argc, char **argv)
{
Camera *camera = new Camera();
glutReshapeFunc(camera->ReshapeCamera);
}
और मेरे कैमरा वर्ग में इस तरह दिखता है Camera.h:
class Camera
{
public:
Camera(void);
~Camera(void);
void ReshapeCamera(int width, int height);
};
हो सकता है कि यह सिर्फ एक सामान्य कॉलबैक प्रश्न है, लेकिन इंटरनेट पर मिली एकमात्र चीज़ कॉलबैक के आस-पास कुछ रैपर वर्ग बना रही थी। लेकिन ऐसा नहीं लगता है कि यह इतना कठिन होना चाहिए। अग्रिम धन्यवाद।
इसलिए मैंने अब अपनी कक्षा में एक स्थिर कार्य बनाया है, लेकिन ऐसा लगता है कि यह __thiscall से __decl में परिवर्तित नहीं हो सकता है। 'त्रुटि 1 त्रुटि C2664:' glutReshapeFunc ':' void (__thiscall कैमरा :: *) (int, int) 'से' void (__cdecl *) (int, int) 'पैरामीटर 1 को परिवर्तित नहीं कर सकता है। और एक स्पष्ट __cdecl जोड़कर 'कैमरा ::' -part के बारे में चेतावनी देता है। – Marnix
@ मार्निक्स: '__thiscall' मुझे बताता है कि 'glutReshapeFunc' को' स्थिर 'के रूप में घोषित नहीं किया गया है। – Thomas
@ थॉमस: कोई glutReshapeFunc शायद सी में एक फ़ंक्शन है, मेरे कैमरा वर्ग से आने वाला फ़ंक्शन स्थिर है, लेकिन इसलिए एक और नामस्थान है। तो ऐसा नहीं लगता है। – Marnix