मैं जीसीसी 4.5 का उपयोग कर रहा हूं और बहुत ही असाधारण व्यवहार देखता हूं। मैं सोच रहा हूं कि इस ऑपरेटर के साथ कुछ ऐसा है जो मैं पूरी तरह समझ नहीं पा रहा हूं। मैंने सोचा कि मैं सी ++ में कुशल था। मेरे पास एक कार्यान्वित कास्ट ऑपरेटर operator HWND ...
के साथ विंडोज HWND
ऑब्जेक्ट्स के लिए एक पतली सी ++ रैपर क्लास Wnd
है।सशर्त ऑपरेटर की सीमाएं ?:
यदि मैं यह (दिए गए इनपुट Wnd *p
और एक नमूना समारोह SetParent(HWND))
तरह सशर्त ऑपरेटर का उपयोग करें:।।
SetParent((p!=NULL) ? (HWND)(*p) : NULL)
माता पिता ठीक से NULL
या p
के आधार पर सेट है यह मैं क्या उम्मीद करेंगे है लेकिन अगर आलसी और लिखने होने की हिम्मत:। GDB चलाने के बाद
SetParent(p ? *p : NULL)
चीजें बिगड़ जाना मुझे लगता है कि नाशक vari पर कहा जाता है पर कॉल करने के बाद सक्षम p
। कोई विचार क्या हो रहा है?
संपादित यहाँ मेरी WND वर्ग है:
class Wnd{
HWND m_hwnd; ///< the actual handle
WndFake *fake; ///< store state here if we do not have a handle
public:
virtual ~Wnd();
//contructor s
Wnd(HWND wnd=NULL):m_hwnd(wnd),fake(NULL){}
Wnd(DWORD sty,const jchar *title,const RECT &sz);
operator HWND(){return m_hwnd;}
operator HWND() const {return m_hwnd;}
}
आप शायद अपना पूरा 'Wnd' वर्ग परिभाषा दिखाने की जरूरत जा रहे हैं। –
@bacchus, ध्यान दें कि आपके '(HWND))' संपादित गलत था: डी हालांकि बेहतर रिक्ति अच्छा है ... – sarnold
@sarnold अतिरिक्त ब्रैकेट सजा से है। मैंने यह खो दिया। चेतावनी के लिए धन्यवाद;) – bacchus