Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Operátor WinRT nebo CLR "operator" má parametr předaný odkazem. Operátor WinRT nebo CLR má odlišnou sémantiku od operátoru jazyka C++, chtěli jste předat hodnotu?
Poznámky
Hodnotu jste předali odkazem na uživatelem definovaný operátor prostředí Windows Runtime nebo CLR. Pokud je hodnota uvnitř funkce změněna, mějte na paměti, že hodnota vrácená po volání funkce bude přiřazena návratová hodnota funkce. Ve standardním jazyce C++ se změněná hodnota projeví po volání funkce.
Příklad
Následující příklad vygeneruje C4460 a ukazuje, jak ho opravit.
// 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
}