2014-11-18 15 views
6

Ho una classe Color che contiene tre componenti float (r, g, b).Restituisce il tipo errato in C++

devo programmare la seguente funzione:

colori getColor (valori unsigned char [], int i)

Normalmente dovrebbe programmare in questo modo:

Color getColor(unsigned char values[], int i){ 
    return Color((float) values[i]/255.0, (float) values[i+1]/255.0, (float) values[i+2]/255.0); 
} 

Ma errore Ho fatto

return values[i]; 

Quando ho compilato non ho ottenuto alcun errore di compilazione e non ho anche l'errore di run time.

Perché questo è possibile?

+2

Stai chiamando Color con un costruttore con 3 caratteri senza segno. Ha anche un costruttore con 1 carattere senza segno? ... Quindi è implicitamente costruito con esso. – deviantfan

+1

Esistono costruttori per 'Color' che accettano un singolo argomento? Cosa succede se li dichiari come "espliciti"? –

+3

Mostrare come è definita la classe/struct Color. – David

risposta

5

Questo potrebbe essere il risultato di un costruttore non esplicito della classe Color che accetta il char unsigned come argomento.

Ciò significa che si dispone di un costruttore nella classe Color con un solo argomento OPPURE più argomenti restano come parametri predefiniti.

0

Controllare il costruttore nella classe Color e sovrascrivere con quello richiesto.

Problemi correlati