建議使用 Visual Studio 2017

編譯器錯誤 C3815

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

方法 'get_accessor' 傳回型別必須符合 setter 的最後一個參數的型的別

當您宣告屬性,傳回值get_accessor方法必須符合的 set 存取子方法宣告中的最後一個參數。

C3815 是只連線到使用/clr:oldSyntax

下列範例會產生 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  

下列範例說明如何多載屬性,使 getter 的傳回型別不符 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);  
  
};  

顯示: