उदाहरण के लिए एक घोषणा जैसे:
int (x) = 0;
या यहां तक कि:
int (((x))) = 0;
मैं इस पर अड़ गया क्योंकि मेरे कोड में मैं एक के बाद एक के समान एक टुकड़ा है:
struct B
{
};
struct C
{
C (B *) {}
void f () {};
};
int main()
{
B *y;
C (y);
}
जाहिर है कि मैं C
उस वस्तु का निर्माण करना चाहता था, जो तब अपने विध्वंसक में उपयोगी हो। हालाँकि जैसा कि यह होता है कि संकलक प्रकार के साथ C (y);
चर की घोषणा के रूप में व्यवहार करता है और इस प्रकार यह पुनर्परिभाषित के बारे में एक त्रुटि प्रिंट करता है । दिलचस्प बात यह है कि अगर मैं इसे कुछ इस तरह से या जैसे लिखूंगा जैसा कि इरादा है। सबसे अच्छा आधुनिक समाधान , कंस्ट्रक्टर कॉल में उपयोग करना है, निश्चित रूप से।y
C
y
C (y).f ()
C (static_cast<B*> (y))
{}
तो जैसा कि मैंने उसके बाद पता लगाया है, वैरिएबल की घोषणा करना संभव है जैसे int (x) = 0;
या यहां तक कि int (((x))) = 0;
लेकिन मैंने कभी किसी को वास्तव में इस तरह की घोषणाओं का उपयोग करते हुए नहीं देखा है। तो मुझे दिलचस्पी है-ऐसी संभावना का उद्देश्य क्या है क्योंकि अब तक मैं देख रहा हूं कि यह केवल कुख्यात "सबसे डरावने पार्स" के समान मामला बनाता है और कुछ भी उपयोगी नहीं जोड़ता है?