error C2801: 'operator =' must be a non-static member
Ostatnio zmodyfikowano 2010-01-13 10:01
DejaVu Temat założony przez niniejszego użytkownika |
error C2801: 'operator =' must be a non-static member » 2010-01-13 09:46:30 Próbuję przeciążyć operator = do poniższego przykładu: CDebugVariable xxx; long zmienna = xxx;
Niestety jak bym nie zapisał funkcji dostaję błędem: error C2801: 'operator =' must be a non-static member http://msdn.microsoft.com/en-us/library/k4fyzf6a(VS.71).aspxPytanie moje brzmi: jak powinna wyglądać funkcja aby działał mi operator przypisania w powyższym przykładzie? |
|
Elaine |
» 2010-01-13 09:55:13 operator= MUSI być niestatyczną metodą klasy. W takim razie nie jest możliwe przeciążenie go dla typu wbudowanego. Ale... to, co tu masz to nie operator=, tylko konstruktor (co i tak niewiele zmienia, bo nie zrobisz nowego konstruktora dla long). To, co próbujesz zrobić można osiągnąć operatorem konwersji: struct wtf { operator long() const { return 8; } };
wtf osiem; long foo = osiem, bar; bar = osiem; |
|
DejaVu Temat założony przez niniejszego użytkownika |
» 2010-01-13 10:01:32 Działa :) wielkie dzięki. class CDebugVariable { public: typedef long TypeP; CDebugVariable & operator =( const TypeP & value ) { m_value = value; return * this; } operator TypeP() const { return m_value; } TypeP m_value; };
CDebugVariable xxx; long zmienna = xxx; xxx = 123; |
|
« 1 » |