2013-08-12 8 views
5

ho una funzione che sovraccarica operator= nella classe 'SSM'Non sono noti conversione per argomento da tipo a tipo e

ssm& operator=(ssm& rhs); 

tardi ho utilizzare un oggetto SSM (itsSSM) come membro di un'altra classe (mt3dset). Io uso la seguente dichiarazione per inizializzare quel membro nel costruttore.

itsSSM= ssm(); 

Ma sto ottenendo un errore:

error: no match for ‘operator=’ in ‘((mt3dSet*)this)->mt3dSet::itsSSM = ssm()’

error: no known conversion for argument 1 from ‘ssm’ to ‘ssm&’

È un problema con il compilatore (g ++ 4.7)? (Si prega di chiedere per ulteriori informazioni se necessario)

risposta

2

si dovrebbe fare che

ssm& operator=(const ssm& rhs); 
+1

Sarebbe bello per spiegare il motivo per cui * * lo facesse in quel modo. – Borgleader

+0

@dhavenith grazie! – George

6

No, non è un problema con il compilatore. Non è possibile associare un riferimento temporaneo a un riferimento non const. Notare che Visual C++ ha un'estensione per consentire questa funzionalità non standard.

Basta cambiare il tuo assignent copia a prendere il suo argomento come const:

ssm& operator=(const ssm& rhs);

+0

Grazie mille. L'ho trascurato! – George

Problemi correlati