Compiler Error C2801

'operator operator' must be a non-static member

The following operators can be overloaded only as nonstatic members:

  • Assignment =

  • Class member access ->

  • Subscripting []

  • Function call ()

Possible C2801 causes:

  • Overloaded operator is not a class, structure, or union member.

  • Overloaded operator is declared static.

  • The following sample generates C2801:

// C2801.cpp
// compile with: /c
operator[]();   // C2801 not a member
class A {
   static operator->();   // C2801 static
   operator()();   // OK
};