Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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
}