Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A WinRT vagy CLR művelet 'operátor' paramétere hivatkozással került átadásra. A WinRT vagy a CLR operátor eltérő szemantikával rendelkezik, mint a C++ operátor. Szándékosan adott át értéket?
Megjegyzések
Egy felhasználó által definiált Windows-futtatókörnyezeti vagy CLR-operátorra hivatkozva adott át egy értéket. Ha az érték a függvényen belül módosul, vegye figyelembe, hogy a függvényhívás után visszaadott érték hozzá lesz rendelve a függvény visszatérési értékéhez. A standard C++-ban a módosított érték a függvényhívás után jelenik meg.
Example
Az alábbi példa létrehozza a C4460-et, és bemutatja a javítás módját.
// 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
}