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

    CLICKABLE() 
    { 
     alt=0; 
    } 
}; 

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

Bu kod bana aşağıdaki hata veriyor bir yapı başlatırken: Nasıl yardımcıHata bir bağ kapalı başlatıcı listesinde

Could not convert from brace-enclosed initializer list

birisi derleyici bana bu hatayı veriyor bana neden açıklamak ve Could düzelt? Ben hala dili öğreniyorum.

cevap

13

Sınıfınız bir kurucuya sahiptir, bu nedenle bir toplam değil, yani toplu başlatmayı kullanamazsınız. Alternatif

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() {} 

}; 

Eğer agrega başlatma kullanıcı kurucular ilan kaldırabilir ve kullanabilirsiniz:: Sen parametrelerin doğru sayıda ve türünü alan bir kurucu ekleyebilirsiniz Aslında agrega başlatma ile kullanılabilecek

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

kullanıcı bu yapıda olduğu gibi ilk kurucunun varlığı ile de kurucular ilan etti. –

+1

@ Hi-Angel Sözdizimi aynı olmasına rağmen, tür bir toplu değilse, "aggragate başlatma" değildir. Toplam başlatmanın bir üst kümesi olan "liste başlatması" gibi bir şey denir. – juanchopanza

İlgili konular