Udostępnij za pośrednictwem


pointers_to_members

Określonego język C++

Określa, czy wskaźnik do członka klasy może być zadeklarowany przed jego definicją skojarzonej klasy i jest używany do kontroli rozmiaru wskaźnika i kodu wymaganych do interpretacji wskaźnika.

#pragma pointers_to_members( pointer-declaration, [most-general-representation] )

Uwagi

Możesz umieścić pragmę pointers_to_members w pliku źródłowym, jako alternatywę użycia opcji kompilatora /vmx lub słów kluczowych dziedziczenia.

Argument pointer-declaration określa, czy został zadeklarowany wskaźnik do członka przed czy po definicji funkcji skojarzonej.Argument pointer-declaration jest jednym z dwóch następujących symboli:

Argument

Komentarze

full_generality

Generuje kod bezpieczny, czasem mało optymalny.Możesz użyć full_generality, jeżeli zadeklarowano dowolne wskaźniki do członka przed zdefiniowaniem skojarzonej klasy.Ten argumentu zawsze używa reprezentacji wskaźnika określonej przez argument most-general-representation.Zapis jest równoważny zapisowi /vmg.

best_case

Generuje kod bezpieczny, optymalny przy użyciu reprezentacji najlepszego przypadku dla wszystkich wskaźników do członków.Wymaga definiowania klasy przed zadeklarowaniem wskaźnika do członka klasy.Wartością domyślną jest best_case.

Argument most-general-representation określa reprezentację najmniejszego wskaźnika, który kompilator może bezpiecznie używać odwołania do dowolnego wskaźnika do członka klasy w jednostce tłumaczenia.Argument może być dowolnym z następujących:

Argument

Komentarze

single_inheritance

Najbardziej ogólną reprezentacją jest pojedyncze dziedziczenie, wskaźnik do funkcji składowej.Powoduje błąd, jeśli model dziedziczenia definicji klasy, do której zgłaszany jest wskaźnik do członka jest wielokrotny lub wirtualny.

multiple_inheritance

Najbardziej ogólną reprezentacją jest wielokrotne dziedziczenie, wskaźnik do funkcji składowej.Powoduje błąd, jeśli model dziedziczenia definicji klasy, do której zgłaszany jest wskaźnik do członka jest wirtualny.

virtual_inheritance

Najbardziej ogólną reprezentacją jest wirtualne dziedziczenie, wskaźnik do funkcji składowej.Nigdy nie powoduje błędu.Jest to argument domyślny, gdy jest używane #pragma pointers_to_members(full_generality).

Informacje dotyczące przestrogiPrzestroga

Radzimy umieścić pragmę pointers_to_members tylko w pliku kodu źródłowego, na który chcesz mieć wpływ i tylko po dowolnej dyrektywie #include.Praktyka ta zmniejsza ryzyko, że pragma wpłynie na inne pliki i która przypadkowo określi wiele definicji dla tej samej zmiennej, funkcji lub nazwy klasy.

Przykład

//   Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )

Zobacz też

Informacje

Dyrektywy pragma i słowo kluczowe __Pragma