2014-07-15 14 views
7
struct CLICKABLE 
{ 
    int x; 
    int y; 
    BITMAP* alt; 
    BITMAP* bitmap; 

    CLICKABLE() 
    { 
     alt=0; 
    } 
}; 

CLICKABLE input={1,2,0,0}; 

इस कोड को मेरा पीछा त्रुटि देता है के साथ एक struct आरंभ जब:त्रुटि एक ब्रेस संलग्न प्रारंभकर्ता सूची

Could not convert from brace-enclosed initializer list

कोई मुझे क्यों संकलक मुझे इस त्रुटि दे रहा है समझा सकते हैं, और कैसे मैं यह कर सकते हैं इसे ठीक करो? मैं अभी भी भाषा सीख रहा हूँ।

उत्तर

13

आपकी कक्षा में एक निर्माता है, इसलिए यह कुल नहीं है, जिसका अर्थ है कि आप कुल प्रारंभिक उपयोग नहीं कर सकते हैं। वैकल्पिक रूप से

struct CLICKABLE 
{ 
    int x; 
    int y; 
    BITMAP* alt; 
    BITMAP* bitmap; 

    CLICKABLE(int x, int y, BITMAP* alt, BITMAP* bitmap) 
    : x(x), y(y), alt(alt), bitmap(bitmap) { ... } 

    CLICKABLE() : x(), y(), alt(), bitmap() {} 

}; 

हैं, तो आपको प्रारंभ उपयोगकर्ता कंस्ट्रक्टर्स घोषित हटा सकते हैं और उपयोग करें:: आप एक निर्माता सही संख्या और मानकों के प्रकार लेने में जोड़ सकते हैं

CLICKABLE a = {};   // all members are zero-initialized 
CLICKABLE b = {1,2,0,0}; 
+0

असल में कुल आरंभीकरण के साथ इस्तेमाल किया जा सकता उपयोगकर्ता ने कन्स्ट्रक्टर भी घोषित किए, इस उदाहरण में पहले कन्स्ट्रक्टर की उपस्थिति के साथ। –

+1

@ हाय-एंजेल हालांकि वाक्यविन्यास एक जैसा है, यह प्रकार एक समग्र नहीं है, तो यह "प्रारंभिक वृद्धि" नहीं है। मुझे लगता है कि इसे "सूची प्रारंभिकरण" जैसे कुछ कहा जाता है, जो समग्र प्रारंभिकता का एक सुपरसेट है। – juanchopanza

संबंधित मुद्दे