2013-08-12 26 views
5

Mam funkcję, która przeciąża operator= w klasie „SSM”Nie wiadomo konwersji argumentu od rodzaju wpisywać &

ssm& operator=(ssm& rhs); 

Później użyć obiektu SSM (itsSSM) jako członka innej klasy (mt3dset). Używam następującej deklaracji, aby zainicjować tego członka w konstruktorze.

itsSSM= ssm(); 

Ale otrzymuję błąd:

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

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

jest to błąd kompilatora g ++ (4.7)? (W razie potrzeby proszę zapytać o więcej informacji)

Odpowiedz

2

Należy upewnić że

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

Byłoby miło, aby wyjaśnić dlaczego * * on powinien zrobić to w ten sposób. – Borgleader

+0

@dhavenith dziękuję! – George

6

Nie, to nie jest problem z kompilatora. Nie można powiązać wartości tymczasowej z odwołaniem innym niż const. Zauważ, że Visual C++ ma rozszerzenie, aby umożliwić tę niestandardową funkcję.

Wystarczy zmienić swoją kopię assignent wziąć swój argument jako const:

ssm& operator=(const ssm& rhs);

+0

Wielkie dzięki. Przeoczyłem to! – George

Powiązane problemy