Предупреждение компилятора (уровень 1) C4383
"instance_dereference_operator": значение деreferencing дескриптор может измениться, когда существует определяемый пользователем оператор "оператор"; запись оператора в виде статической функции, чтобы быть явным в операнде
При добавлении определяемого пользователем экземпляра переопределение оператора деreference в управляемом типе вы можете переопределить возможность оператора разыменования типа возвращать объект дескриптора. Рассмотрите возможность написания статического, определяемого пользователем оператора деreference.
Дополнительные сведения см. в разделе "Дескриптор оператора объектов" (^) и "Оператор ссылки на отслеживание".
Кроме того, оператор экземпляра недоступен другим компиляторам языка через метаданные, на которые ссылается ссылка. Дополнительные сведения см. в разделе "Определяемые пользователем операторы " (C++/CLI)".
Пример
В следующем примере возникает ошибка C4383.
// C4383.cpp
// compile with: /clr /W1
ref struct S {
int operator*() { return 0; } // C4383
};
ref struct T {
static int operator*(T%) { return 0; }
};
int main() {
S s;
S^ pS = %s;
T t;
T^ pT = %t;
T% rT = *pT;
}