Obory názvů a viditelnost typů (C++/CX )

Obor názvů je standardní konstruktor jazyka C++ pro seskupování typů, které mají související funkce a brání kolizím názvů v knihovnách. Systém typů prostředí Windows Runtime vyžaduje, aby všechny veřejné typy prostředí Windows Runtime, včetně těch ve vašem vlastním kódu, byly deklarovány v oboru názvů v oboru názvů. Veřejné typy deklarované v globálním oboru nebo vnořené uvnitř jiné třídy způsobí chybu v době kompilace.

Soubor .winmd musí mít stejný název jako kořenový obor názvů. Například třídu s názvem A.B.C.MyClass lze vytvořit instanci pouze v případě, že je definována v souboru metadat s názvem A.winmd nebo A.B.winmd nebo A.B.C.winmd. Název spustitelného souboru se nevyžaduje, aby odpovídal názvu souboru .winmd.

Viditelnost typů

V oboru názvů prostředí Windows Runtime typy – na rozdíl od standardních typů C++ – mají privátní nebo veřejnou přístupnost. Ve výchozím nastavení je přístupnost soukromá. Metadata vidí jenom veřejný typ a je proto použitelný z aplikací a komponent, které můžou být napsané v jiných jazycích než C++. Obecně platí, že pravidla pro viditelné typy jsou více omezující než pravidla pro typy, které nejsou viditelné, protože viditelné typy nemohou vystavit koncepty specifické pro jazyk C++, které nejsou podporovány v jazycích .NET nebo JavaScriptu.

Poznámka:

Metadata se využívají pouze za běhu jazyky .NET a JavaScript. Když aplikace nebo komponenta C++ mluví s jinou aplikací nebo komponentou jazyka C++, zahrnuje to součásti Systému Windows, které jsou všechny napsané v jazyce C++, není potřeba používat metadata za běhu.

Přístupnost a viditelnost členů

V privátní třídě ref, rozhraní nebo delegátu se do metadat nevygenerují žádní členové, a to ani v případě, že mají veřejnou přístupnost. Ve veřejných třídách ref můžete řídit viditelnost členů v metadatech nezávisle na jejich přístupnosti ve zdrojovém kódu. Stejně jako ve standardním jazyce C++ použijte zásadu nejnižších oprávnění; nezviditelněte členy v metadatech, pokud to vůbec nesmí být.

Pomocí následujících modifikátorů přístupu můžete řídit viditelnost metadat i přístupnost zdrojového kódu.

Modifikátor Význam Vygenerováno do metadat?
private Výchozí přístupnost. Stejný význam jako ve standardním jazyce C++. No
protected Stejný význam jako ve standardním jazyce C++, a to jak v rámci aplikace, tak i v metadatech. Ano
public Stejný význam jako ve standardním jazyce C++. Ano
public protected -nebo- protected public Chráněná přístupnost v metadatech, veřejná v aplikaci nebo komponentě. Ano
protected private nebo private protected V metadatech se nezobrazuje; chráněná přístupnost v aplikaci nebo komponentě.
internal nebo private public Člen je veřejný v aplikaci nebo komponentě, ale není viditelný v metadatech. No

prostředí Windows Runtime obory názvů

Rozhraní API systému Windows se skládá z typů deklarovaných v oborech názvů Windows::*. Tyto obory názvů jsou vyhrazené pro Windows a do nich nelze přidat typy. V prohlížeči objektů můžete tyto obory názvů zobrazit v souboru windows.winmd. Dokumentaci k těmto oborům názvů najdete v tématu Rozhraní API systému Windows.

Obory názvů C++/CX

C++/CX definují určité typy v těchto oborech názvů jako součást projekce systému typů prostředí Windows Runtime.

Obor názvů Popis
default Obsahuje předdefinované číselné typy a typy char16. Tyto typy jsou v oboru názvů a using příkaz není nikdy vyžadován.
Platform Obsahuje především veřejné typy, které odpovídají typům prostředí Windows Runtime, jako Array<T>jsou , String, Guida Boolean. Zahrnuje také specializované pomocné typy, například Platform::Agile<T> a Platform::Box<T>.
Platform::Collections Obsahuje konkrétní třídy kolekce, které implementují prostředí Windows Runtime rozhraní IVectorkolekce atdIMap. Tyto typy jsou definovány v souboru hlaviček, collection.h, nikoli v platform.winmd.
Platform::Details Obsahuje typy používané kompilátorem a nejsou určeny pro veřejnou spotřebu.

Viz také

Systém typů (C++/CX)