Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
nie można określić GUID typu. Program może ulec awarii w czasie wykonywania.
Ostrzeżenie C4462 występuje w aplikacji lub składniku środowisko wykonawcze systemu Windows, gdy publiczny TypedEventHandler ma jako jeden z jego parametrów typu odwołanie do otaczającej klasy.
To ostrzeżenie jest automatycznie promowane do błędu. Jeśli chcesz zmodyfikować to zachowanie, użyj ostrzeżenia #pragma. Aby na przykład wprowadzić C4462 w problem z ostrzeżeniem poziomu 4, dodaj ten wiersz do pliku kodu źródłowego:
#pragma warning(4:4462)
Przykład
Ten przykład generuje ostrzeżenie C4462:
namespace N
{
public ref struct EventArgs sealed {};
public ref struct R sealed
{
R() {}
event Windows::Foundation::TypedEventHandler<R ^, EventArgs^>^ e;
};
}
[Platform::MTAThread]
int main()
{
auto x = ref new N::R();
}
Istnieją dwa sposoby obejścia tego błędu. Jednym ze sposobów, pokazanym w następnym przykładzie, jest zapewnienie zdarzeniu wewnętrznej dostępności, tak aby było ono dostępne dla kodu w tym samym pliku wykonywalnym, ale nie dla kodu w innych składnikach systemu Windows czasu wykonywania.
internal:
event Windows::Foundation::TypedEventHandler<R ^, EventArgs^>^ e;
Jeśli zdarzenie musi być publiczne, można użyć innego obejścia, które polega na uwidocznieniu go przez interfejs domyślny:
ref struct R;
public interface struct IR{ event Windows::Foundation::TypedEventHandler<R ^, EventArgs^>^ e;};
public ref struct R sealed : [Windows::Foundation::Metadata::Default] IR
{
R() {}
virtual event Windows::Foundation::TypedEventHandler<R ^, EventArgs^>^ e;
};
Identyfikator GUID typu Windows::Foundation::TypedEventHandler<R^, EventArgs^>^ jest używany tylko wtedy, gdy dostęp do typu jest uzyskiwany z innego składnika. Pierwsza metoda obejścia problemu jest skuteczna, ponieważ może on być dostępny wyłącznie w ramach własnego składnika po zastosowaniu obejścia. W przeciwnym razie kompilator musi założyć najgorszy przypadek i wygenerować ostrzeżenie.