Bagikan melalui


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_generalityAku akan menemuinya. , most-general-representation)

Keterangan

Anda dapat menempatkan pointers_to_memberspragma di file sumber Anda sebagai alternatif untuk menggunakan/vmb opsi atau /vmgdan/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. Gunakan full_generality jika ada penunjuk ke anggota yang dideklarasikan sebelum definisi kelas terkait. Argumen ini selalu menggunakan representasi penunjuk yang ditentukan oleh most-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 adalah best_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_memberspragma 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

Lihat juga

Pragmadirektif dan __pragma kata kunci dan _Pragma