Compiler Error C3815
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at 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);
};
Show: