2011-09-17 16 views
5

Questo codice funziona presumibilmente con GCC - Sto cercando di farlo funzionare con Visual Studio. Non riesco a capire se il codice è effettivamente difettoso o non sto facendo qualcosa di giusto con la porta.Non capisco questo errore C++ - errore C2101: '&' su costante

1>c:\somepath\aaa.h(52): error C2101: '&' on constant 
1>   c:\somepath\aaa.h(52): while compiling class template member function 'const blahblah::Message something::AClass<Type>::aMethod(void) const' 
1>   with 
1>   [ 
1>    Type=const lala::BClass& 
1>   ] 
1>   c:\somepath\bbb.h(79) : see reference to class template instantiation 'something:AClass<Type>' being compiled 
1>   with 
1>   [ 
1>    Type=const lala::BClass& 
1>   ] 
1> MyApplication.cpp 

file

aaa.h:52   virtual const Type aMethod() const { return Type(); } 

bbb.h:79   AClass<const BClass&> blahblahblah_; 
+0

Piccolo insetto carino questo. Mi piace. –

+0

È una versione recente? Sembra che VS2010 abbia rielaborato questo messaggio di errore. – MSalters

+0

Buono; è un po 'una diagnosi spazzatura qui. –

risposta

8

Costruire T() dove T è un tipo di riferimento non è valido, e non ha alcun senso. Alcune versioni di gcc lo accettano erroneamente.

+0

+1: l'hai inchiodato. –

+0

GCC 4.5.1 ha capito bene, incluso il messaggio di errore: http://ideone.com/DOHb3 "errore: inizializzazione valore non valida dei tipi di riferimento" – MSalters

Problemi correlati