Поделиться через


pointers_to_members

Блок, относящийся только к языку C++

Определяет, можно ли объявить указатель на член класса до связанного определения класса, и используется для контроля размера указателя и кода, необходимого для интерпретации указателя.

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

Заметки

Можно поместить директиву pragma pointers_to_members в файл исходного кода вместо использования параметров компилятора /vmx или ключевых слов наследования.

Аргумент объявление-указателя определяет, объявлен ли указатель на член до или после соответствующего определения функции. Аргумент объявление указателя представляет собой один из следующих двух символов.

Аргумент

Комментарии

full_generality

Создает безопасный, но не всегда оптимальный код. full_generality используется, если какой-либо указатель на член объявлен до соответствующего определения класса. Этот аргумент всегда использует представление указателя, заданное аргументом наиболее-общее-представление. Эквивалентен /vmg.

best_case

Создает безопасный, оптимальный код с использованием наилучшего представления всех указателей на элементы. Требует определения класса перед объявлением указателя на член класса. Значение по умолчанию — best_case.

Аргумент наиболее общее представление задает наименьшее представление указателя, которое может безопасно использоваться компилятором для ссылки на любой указатель на элемент класса в записи преобразования. Этот аргумент может представлять собой один из нижеследующих объектов.

Аргумент

Комментарии

single_inheritance

Наиболее общее представление является указателем на функцию-член с единичным наследованием. Вызывает ошибку, если модель наследования определения класса, для которой объявлен указатель на член класса, является множественной или виртуальной.

multiple_inheritance

Наиболее общее представление является указателем на функцию-член с множественным наследованием. Вызывает ошибку, если модель наследования определения класса, для которой объявлен указатель на элемент, является виртуальной.

virtual_inheritance

Наиболее общее представление является указателем на функцию-член с виртуальным наследованием. Никогда не вызывает ошибку. Это аргумент по умолчанию, если используется директива #pragma pointers_to_members(full_generality).

Предупреждение

Рекомендуется помещать директиву pragma pointers_to_members только в файл исходного кода, который требуется изменить, и только после директив #include.Это снизит риск воздействия директивы pragma на другие файлы и случайного задания нескольких определений одной и той же переменной, функции или имени класса.

Пример

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

См. также

Ссылки

Директивы Pragma и ключевое слово __Pragma