Delen via


Compilerwaarschuwing (niveau 4) C4460

WinRT- of CLR-operator 'operator', heeft een parameter door verwijzing doorgegeven. WinRT- of CLR-operator 'operator' heeft verschillende semantiek van C++-operator 'operator', wilde u een waarde doorgeven?

Opmerkingen

U hebt een waarde doorgegeven aan een door de gebruiker gedefinieerde Windows Runtime- of CLR-operator. Als de waarde in de functie wordt gewijzigd, moet u er rekening mee houden dat de geretourneerde waarde na de functieaanroep de retourwaarde van de functie wordt toegewezen. In standaard C++wordt de gewijzigde waarde weergegeven na de functieaanroep.

Example

In het volgende voorbeeld wordt C4460 gegenereerd en ziet u hoe u dit kunt oplossen.

// C4460.cpp
// compile with: /W4 /clr
#include <stdio.h>

public value struct V {
   static V operator ++(V& me) {   // C4460
   // try the following line instead
   // static V operator ++(V me) {

      printf_s(__FUNCSIG__ " called\n");
      V tmp = me;
      me.m_i++;
      return tmp;
   }
   int m_i;
};

int main() {
   V v;
   v.m_i = 0;

   printf_s("%d\n", v.m_i);   // Should print 0
   v++;   // Translates to "v = V::operator ++(v)"
   printf_s("%d\n", v.m_i);   // will print 0, hence the warning
}