Sdílet prostřednictvím


pointers_to_members

Specifické pro jazyk C++

Určuje, zda ukazatel na člen třídy lze deklarovat před definicí jeho přidružené třídy a slouží k řízení velikosti ukazatele a kódu potřebného k interpretaci tohoto ukazatele.

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

Poznámky

Direktivu pragma pointers_to_members lze do zdrojového souboru umístit jako alternativu k použití možnosti kompilátoru /vmx nebo klíčových slov dědičnosti.

Argument pointer-declaration určuje, zda je nutné ukazatel na člen deklarovat před nebo po definici přidružené funkce.Argument pointer-declaration je jedním ze dvou následujících symbolů:

Argument

Komentáře

full_generality

Generuje bezpečný, někdy neoptimální kód.Symbol full_generality lze použít, pokud je jakýkoli ukazatel na člen deklarován před definicí přidružené třídy.Tento argument vždy používá reprezentaci ukazatele určenou argumentem most-general-representation.Ekvivalentní možnosti /vmg.

best_case

Generuje bezpečný, optimální kód, který používá nejlepší reprezentaci pro všechny odkazy na členy.Vyžaduje definování třídy před deklarací ukazatele na člena této třídy.Výchozí hodnota je best_case.

Argument most-general-representation určuje nejmenší reprezentaci ukazatele, který kompilátor může bezpečně použít pro odkazování na jakéhokoli ukazatele na člena třídy v jednotce převodu.Tento argument může nabývat kterékoliv z těchto hodnot:

Argument

Komentáře

single_inheritance

Nejobecnější reprezentace je jediná dědičnost, ukazatel na členskou funkci.Způsobí chybu, je-li model dědičnosti definice třídy, pro kterou je ukazatel na člen deklarován, vícenásobný nebo virtuální.

multiple_inheritance

Nejobecnější reprezentace je vícenásobná dědičnost, ukazatel na členskou funkci.Způsobí chybu, je-li model dědičnosti definice třídy, pro kterou je ukazatel na člen deklarován, virtuální.

virtual_inheritance

Nejobecnější reprezentace je virtuální dědičnost, ukazatel na členskou funkci.Nikdy nezpůsobí chybu.Toto je výchozí argument, pokud je použita direktiva #pragma pointers_to_members(full_generality).

Poznámka k upozorněníUpozornění

Direktivu pragma pointers_to_members používejte pouze v souboru zdrojového kódu, který chcete ovlivnit a až po všech direktivách #include.Touto praxí snížíte riziko, že tato direktiva pragma ovlivní další soubory a že bude náhodně zadáno více definic pro stejnou proměnnou, funkci nebo název třídy.

Příklad

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

Viz také

Referenční dokumentace

Direktivy Pragma a klíčové slovo __Pragma