pointers_to_members
pragma
C++ Spesifik
Menentukan apakah penunjuk ke anggota kelas dapat dideklarasikan sebelum definisi kelas terkait. Digunakan untuk mengontrol ukuran penunjuk, dan kode yang diperlukan untuk menginterpretasikan penunjuk.
Sintaks
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
Aku akan menemuinya.,
most-general-representation
)
Keterangan
Anda dapat menempatkan pointers_to_members
pragma di file sumber Anda sebagai alternatif untuk menggunakan/vmb
opsi atau /vmg
dan/vmm
, /vms
, /vmv
pengkompilasi atau kata kunci pewarisan khusus Microsoft.
Argumen deklarasi pointer menentukan apakah Anda telah mendeklarasikan penunjuk ke anggota sebelum atau sesudah definisi fungsi terkait. Argumen pointer-declaration
adalah salah satu dari dua simbol ini:
full_generality
Menghasilkan kode yang aman dan terkadang tidak optimal. Gunakanfull_generality
jika ada penunjuk ke anggota yang dideklarasikan sebelum definisi kelas terkait. Argumen ini selalu menggunakan representasi penunjuk yang ditentukan olehmost-general-representation
argumen. Setara dengan/vmg
.best_case
Menghasilkan kode optimal menggunakan representasi best-case untuk semua pointer kepada anggota. Mengharuskan Anda menentukan kelas sebelum mendeklarasikan penunjuk kepada anggota. Default adalahbest_case
.
Argumen most-general-representation
menentukan representasi penunjuk terkecil yang harus digunakan pengkompilasi untuk mereferensikan dengan aman penunjuk apa pun kepada anggota kelas dalam unit terjemahan. Argumen dapat berupa salah satu nilai ini:
single_inheritance
Representasi yang paling umum adalah penunjuk pewarisan tunggal ke fungsi anggota. Setara dengan/vmg /vms
. Menyebabkan kesalahan jika model pewarisan definisi kelas adalah beberapa atau virtual.multiple_inheritance
Representasi yang paling umum adalah penunjuk beberapa pewarisan ke fungsi anggota. Setara dengan/vmg /vmm
. Menyebabkan kesalahan jika model pewarisan definisi kelas adalah virtual.virtual_inheritance
Representasi yang paling umum adalah penunjuk pewarisan virtual ke fungsi anggota. Setara dengan/vmg /vmv
. Tidak pernah menyebabkan kesalahan.virtual_inheritance
adalah argumen default saat#pragma pointers_to_members(full_generality)
digunakan.
Perhatian
Kami menyarankan Anda untuk menempatkan satu-satunya pointers_to_members
pragma dalam file kode sumber yang ingin Anda pengaruhi, dan hanya setelah direktif apa pun #include
. Praktik ini mengurangi risiko yang pragma akan memengaruhi file lain, dan Anda akan secara tidak sengaja menentukan beberapa definisi untuk variabel, fungsi, atau nama kelas yang sama.
Contoh
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
END C++ Spesifik