pointers_to_members
Szczególne C++
Określa, czy wskaźnik do członka klasy mogą być deklarowane przed jego definicję skojarzonej klasy i jest używana do kontroli rozmiaru wskaźnika i kodu wymaganych do interpretacji wskaźnik.
#pragma pointers_to_members( pointer-declaration, [most-general-representation] )
Uwagi
Można umieścić pointers_to_members pragmy w pliku źródłowego, jako alternatywa do korzystania z /vmx opcje kompilatora lub słowa kluczowe dziedziczenie.
Wskaźnik deklaracji argument określa, czy zadeklarowały wskaźnik do elementu członkowskiego przed lub po definicji funkcji skojarzone.Wskaźnik deklaracji argument jest jedną z dwóch następujących symboli:
Argument |
Komentarze |
---|---|
full_generality |
Generuje kod bezpieczne, czasami nonoptimal.Za pomocą full_generality jeżeli zadeklarowano każdy wskaźnik do elementu członkowskiego przed definicji klasy skojarzone.Ten argument jest zawsze używa reprezentacji wskaźnik określonej przez większość ogólne reprezentacja argument.Odpowiednik /vmg. |
best_case |
Generuje bezpieczne optymalnego kodu za pomocą optymistycznych reprezentacji dla wszystkich wskaźników do członków.Wymaga, Definiowanie klasy przed deklarowanie wskaźnik do elementu członkowskiego tej klasy.Wartością domyślną jest best_case. |
Większość ogólne reprezentacja argument określa najmniejszą reprezentacja wskaźnik kompilator może bezpiecznie korzystać z Aby odwołać się za każdy wskaźnik, aby członek klasy w jednostce tłumaczenia.Argument może być jedną z następujących czynności:
Argument |
Komentarze |
---|---|
single_inheritance |
Reprezentacja najbardziej ogólnym jest pojedynczym dziedziczenie, wskaźnik do funkcji składowej.Powoduje błąd, jeśli model dziedziczenia z definicji klasy, do której zgłaszane jest wskaźnik do elementu członkowskiego jest kiedykolwiek albo wielu lub wirtualna. |
multiple_inheritance |
Reprezentacja najbardziej ogólnym jest wielu dziedziczenie, wskaźnik do funkcji składowej.Powoduje błąd, jeśli model dziedziczenia z definicji klasy, do której zgłaszane jest wskaźnik do elementu członkowskiego jest wirtualna. |
virtual_inheritance |
Reprezentacja najbardziej ogólnym jest wirtualny dziedziczenie, wskaźnik do funkcji składowej.Nigdy nie spowoduje wystąpienie błędu.Jest to argument domyślny podczas pointers_to_members(full_generality) # pragma jest używana. |
Przestroga |
---|
Radzimy umieścić pointers_to_members pragma tylko w pliku kod źródłowy, który ma wpływ na i po dowolnym #include dyrektyw.Praktyka ta rozluźnia ryzyko, że pragma wpłynie na inne pliki i która zostanie przypadkowo można 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 )