Derleyici Uyarısı (düzey 4) C4460
WinRT veya CLR işleci 'operator', başvuru tarafından geçirilen parametreye sahip. WinRT veya CLR işleci 'işleci', 'işleç' C++ işlecinden farklı semantiklere sahip, değere göre geçirmeyi amaçladınız mı?
Kullanıcı tanımlı bir Windows Çalışma Zamanı veya CLR işlecine başvurarak bir değer geçirdiniz. Değer işlevin içinde değiştirilirse, işlev çağrısından sonra döndürülen değere işlevin dönüş değerinin atanacağını unutmayın. Standart C++ dilinde, değiştirilen değer işlev çağrısından sonra yansıtılır.
Örnek
Aşağıdaki örnek C4460 oluşturur ve nasıl düzeltileceğini gösterir.
// 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
}
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin