Compiler Error C3815

return type of method 'get_accessor' must match type of the last parameter of a setter

When declaring properties, the return value of the get_accessor method must match the last parameter in the declaration of the set accessor method.

C3815 is only reachable using /clr:oldSyntax.

The following sample generates C3815:

// C3815.cpp
// compile with: /clr:oldSyntax /LD
#using <mscorlib.dll>
__gc class X
{
public:
   __property char get_N()
   // try the following line instead
   // __property int get_N()
   {
      return m_val;
   }

   __property void set_N( int val)
   {
      m_val = val;
   }

private:
   int m_val;
};   // C3815

The following sample shows how you can overload properties, so that the return type of the getter does not match the last parameter of the setter.

// C3815b.cpp
// compile with: /clr:oldSyntax /c
#using <mscorlib.dll>
public __gc class MyClass {
public:
// 1st property:
   __property System::Int32 get_p1();
   __property void set_p1(System::Int32 i);

// 2nd property (only setter):
   __property void set_p1(System::Int32* i);

};