2014-07-15 6 views

risposta

13

La classe ha un costruttore, quindi non è un aggregato, il che significa che non è possibile utilizzare l'inizializzazione di aggregazione. È possibile aggiungere un costruttore di prendere il giusto numero e il tipo di parametri:

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

}; 

In alternativa, è possibile rimuovere l'utente costruttori dichiarato, e utilizzare l'inizializzazione di aggregazione:

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

In realtà l'inizializzazione aggregata potrebbe essere utilizzato con anche i costruttori dichiarati dall'utente, come in questo esempio con la presenza del primo costruttore. –

+1

@ Hi-Angel Sebbene la sintassi sia la stessa, non è "inizializzazione dell'aggragate" se il tipo non è un aggregato. Penso che sia chiamato qualcosa come "inizializzazione della lista", che è un superset di inizializzazione aggregata. – juanchopanza

Problemi correlati