Delen via


Naamruimten en type zichtbaarheid (C++/CX)

Een naamruimte is een standaard C++-constructie voor het groeperen van typen die gerelateerde functionaliteit hebben en om naamconflicten in bibliotheken te voorkomen. Het Windows Runtime-typesysteem vereist dat alle openbare Windows Runtime-typen, inclusief die in uw eigen code, moeten worden gedeclareerd in een naamruimte binnen het bereik van de naamruimte. Openbare typen die zijn gedeclareerd op globaal bereik of genest in een andere klasse, veroorzaken een compilatietijdfout.

Een .winmd-bestand moet dezelfde naam hebben als de hoofdnaamruimte. Een klasse met de naam A.B.C.MyClass kan bijvoorbeeld alleen worden geïnstantieerd als deze is gedefinieerd in een metagegevensbestand met de naam A.winmd of A.B.winmd of A.B.C.winmd. De naam van het uitvoerbare bestand is niet vereist om overeen te komen met de .winmd-bestandsnaam.

Zichtbaarheid van type

In een naamruimte hebben Windows Runtime-typen, in tegenstelling tot standaard C++-typen, privé- of openbare toegankelijkheid. De toegankelijkheid is standaard privé. Alleen een openbaar type is zichtbaar voor metagegevens en kan daarom worden gebruikt vanuit apps en onderdelen die kunnen worden geschreven in andere talen dan C++. Over het algemeen zijn de regels voor zichtbare typen meer beperkend dan de regels voor niet-zichtbare typen, omdat zichtbare typen geen C++-specifieke concepten kunnen weergeven die niet worden ondersteund in .NET-talen of JavaScript.

Opmerking

Metagegevens worden alleen gebruikt tijdens runtime door .NET-talen en JavaScript. Wanneer een C++-app of -onderdeel met een andere C++-app of -onderdeel praat, inclusief Windows-onderdelen die allemaal zijn geschreven in C++, is er geen runtimeverbruik van metagegevens vereist.

Toegankelijkheid en zichtbaarheid van leden

In een privéverwijzingsklasse, interface of gemachtigde worden er geen leden verzonden naar metagegevens, zelfs als ze openbare toegankelijkheid hebben. In openbare ref-klassen kunt u de zichtbaarheid van leden in metagegevens onafhankelijk van hun toegankelijkheid in uw broncode beheren. Net als in standaard C++, past u het principe van minimale bevoegdheden toe; zorg ervoor dat uw leden niet zichtbaar zijn in metagegevens, tenzij ze absoluut moeten zijn.

Gebruik de volgende toegangsaanpassingen om de zichtbaarheid van metagegevens en de toegankelijkheid van broncode te beheren.

Aanpasser Betekenis Verzonden naar metagegevens?
private De standaardtoegankelijkheid. Dezelfde betekenis als in standaard C++. Nee.
protected Hetzelfde betekent als in standaard C++, zowel binnen de app of het onderdeel als in metagegevens. Ja
public Dezelfde betekenis als in standaard C++. Ja
public protected -of- protected public Beveiligde toegankelijkheid in metagegevens, openbaar binnen de app of het onderdeel. Ja
protected private of private protected Niet zichtbaar in metagegevens; beveiligde toegankelijkheid binnen de app of het onderdeel.
internal of private public Het lid is openbaar in de app of het onderdeel, maar is niet zichtbaar in metagegevens. Nee.

Windows Runtime-naamruimten

De Windows-API bestaat uit typen die worden gedeclareerd in de Windows::*-naamruimten. Deze naamruimten zijn gereserveerd voor Windows en typen kunnen niet aan deze worden toegevoegd. In de objectbrowser kunt u deze naamruimten weergeven in het bestand windows.winmd. Zie Windows API voor documentatie over deze naamruimten.

C++/CX-naamruimten

De C++/CX definieert bepaalde typen in deze naamruimten als onderdeel van de projectie van het Windows Runtime-typesysteem.

Namespace Beschrijving
standaard Bevat de ingebouwde numerieke en teken16-typen. Deze typen vallen binnen het bereik van elke naamruimte en een using instructie is nooit vereist.
Platform Bevat voornamelijk openbare typen die overeenkomen met Windows Runtime-typen, zoals Array<T>, Stringen GuidBoolean. Bevat ook gespecialiseerde helpertypen zoals Platform::Agile<T> en Platform::Box<T>.
Platform::Collections Bevat de concrete verzamelingsklassen die de Windows Runtime-verzamelingsinterfaces IVectorimplementeren, IMapenzovoort. Deze typen worden gedefinieerd in een headerbestand, collection.h, niet in platform.winmd.
Platform::Details Bevat typen die door de compiler worden gebruikt en die niet bedoeld zijn voor openbaar gebruik.

Zie ook

Typesysteem (C++/CX)