Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
WinRT- eller CLR-operatorn "operator", har parametern skickad som referens. WinRT- eller CLR-operatorn "operatorn" har en annan semantik än C++-operatorn "operator", hade du för avsikt att skicka som värde?
Anmärkningar
Du skickade ett värde med referens till en användardefinierad Windows Runtime- eller CLR-operator. Observera att värdet som returneras efter funktionsanropet tilldelas funktionens returvärde om värdet ändras i funktionen. I standard-C++återspeglas det ändrade värdet efter funktionsanropet.
Example
Följande exempel genererar C4460 och visar hur du åtgärdar det.
// 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
}