Bagikan melalui


Namespace dan Visibilitas Jenis (C++/CX )

Namespace adalah konstruksi C++ standar untuk jenis pengelompokan yang memiliki fungsionalitas terkait dan untuk mencegah tabrakan nama di pustaka. Sistem jenis Windows Runtime mengharuskan semua jenis Windows Runtime publik, termasuk yang ada dalam kode Anda sendiri, harus dideklarasikan dalam namespace pada cakupan namespace layanan. Jenis publik yang dideklarasikan pada cakupan global atau berlapis di dalam kelas lain akan menyebabkan kesalahan waktu kompilasi.

File .winmd harus memiliki nama yang sama dengan namespace layanan akar. Misalnya, kelas yang bernama A.B.C.MyClass dapat diinstansiasi hanya jika didefinisikan dalam file metadata yang bernama A.winmd atau A.B.winmd atau A.B.C.winmd. Nama executable tidak diperlukan untuk mencocokkan nama file .winmd.

Visibilitas jenis

Di namespace, jenis Windows Runtime—tidak seperti jenis C++ standar—memiliki aksesibilitas privat atau publik. Secara default, aksesibilitas bersifat privat. Hanya jenis publik yang terlihat oleh metadata dan oleh karena itu dapat dikonsumsi dari aplikasi dan komponen yang mungkin ditulis dalam bahasa selain C++. Secara umum, aturan untuk jenis yang terlihat lebih ketat daripada aturan untuk jenis yang tidak terlihat karena jenis yang terlihat tidak dapat mengekspos konsep khusus C++yang tidak didukung dalam bahasa .NET atau JavaScript.

Catatan

Metadata hanya digunakan pada waktu proses oleh bahasa .NET dan JavaScript. Saat aplikasi atau komponen C++ berbicara dengan aplikasi atau komponen C++ lain—ini termasuk komponen Windows , yang semuanya ditulis dalam C++—maka tidak diperlukan konsumsi metadata run-time.

Aksesibilitas dan visibilitas anggota

Di kelas ref privat, antarmuka, atau delegasi, tidak ada anggota yang dipancarkan ke metadata, bahkan jika mereka memiliki aksesibilitas publik. Di kelas ref publik, Anda dapat mengontrol visibilitas anggota dalam metadata secara independen dari aksesibilitas mereka dalam kode sumber Anda. Seperti pada C++standar, terapkan prinsip hak istimewa paling sedikit; jangan membuat anggota Anda terlihat dalam metadata kecuali mereka benar-benar harus.

Gunakan pengubah akses berikut untuk mengontrol visibilitas metadata dan aksesibilitas kode sumber.

Pengubah Makna Dipancarkan ke metadata?
private Aksesibilitas default. Arti yang sama seperti dalam C++standar. Tidak
protected Arti yang sama seperti dalam C++standar, baik dalam aplikasi atau komponen maupun dalam metadata. Ya
public Arti yang sama seperti dalam C++standar. Ya
public protected -Atau- protected public Aksesibilitas yang dilindungi dalam metadata, publik dalam aplikasi atau komponen. Ya
protected private atau private protected Tidak terlihat dalam metadata; aksesibilitas terlindungi dalam aplikasi atau komponen.
internal atau private public Anggota bersifat publik dalam aplikasi atau komponen, tetapi tidak terlihat dalam metadata. Tidak

Namespace Windows Runtime

WINDOWS API terdiri dari jenis yang dideklarasikan di namespace Windows::*. Namespace layanan ini dicadangkan untuk Windows, dan tipe tidak dapat ditambahkan ke dalamnya. Di Browser Objek, Anda dapat melihat namespace ini di file windows.winmd. Untuk dokumentasi tentang namespace layanan ini, lihat Windows API.

Namespace C++/CX

C++/CX menentukan jenis tertentu di namespace layanan ini sebagai bagian dari proyeksi sistem jenis Windows Runtime.

Ruang nama Deskripsi
Default Berisi jenis numerik dan char16 bawaan. Jenis ini berada dalam cakupan di setiap namespace layanan dan using pernyataan tidak pernah diperlukan.
Platform Berisi terutama jenis publik yang sesuai dengan jenis Windows Runtime seperti Array<T>, , StringGuid, dan Boolean. Juga termasuk jenis pembantu khusus seperti Platform::Agile<T> dan Platform::Box<T>.
Platform::Collections Berisi kelas koleksi beton yang mengimplementasikan antarmuka IVectorkoleksi Windows Runtime , , IMapdan sebagainya. Jenis ini didefinisikan dalam file header, collection.h, bukan di platform.winmd.
Platform::Details Berisi jenis yang digunakan oleh pengkompilasi dan tidak dimaksudkan untuk konsumsi publik.

Baca juga

Sistem Tipe (C++/CX)