Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

error C2801: 'operator =' must be a non-static member

Ostatnio zmodyfikowano 2010-01-13 10:01
Autor Wiadomość
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:
C/C++
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).aspx

Pytanie moje brzmi: jak powinna wyglądać funkcja aby działał mi operator przypisania w powyższym przykładzie?
P-12948
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:
C/C++
struct wtf
{
    operator long() const
    { return 8; }
};
//...
wtf osiem;
long foo = osiem, bar;
bar = osiem;
P-12949
DejaVu
Temat założony przez niniejszego użytkownika
» 2010-01-13 10:01:32
Działa :) wielkie dzięki.
C/C++
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;
}; //class CDebugVariable
//...
CDebugVariable xxx;
long zmienna = xxx;
xxx = 123;
P-12950
« 1 »
  Strona 1 z 1