Compartir a través de


Advertencia del compilador (nivel 1) C4395

"function": a la función miembro se invocará en una copia del miembro de datos initonly "member"

Se llamó a una función miembro en un miembro de datos initonly (C++/CLI). C4395 advierte la función no puede modificar al miembro de datos initonly.

El ejemplo siguiente genera la advertencia C4395:

// C4395.cpp
// compile with: /W1 /clr
public value class V {
public:
   V(int data) : m_data(data) {}

   void Mutate() {
      System::Console::WriteLine("Enter Mutate: m_data = {0}", m_data);
      m_data *= 2;
      System::Console::WriteLine("Leave Mutate: m_data = {0}", m_data);
   }

   int m_data;
};

public ref class R {
public:
   static void f() {
      System::Console::WriteLine("v.m_data = {0}", v.m_data);
      v.Mutate();   // C4395
      System::Console::WriteLine("v.m_data = {0}", v.m_data);
   }

private:
   initonly static V v = V(4);
};

int main() {
   R::f();
}