Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A C++ sablonok nem jelennek meg a metaadatokban, ezért a program nem rendelkezhet nyilvános vagy védett akadálymentességgel. Természetesen a programon belül is használhat standard C++ sablonokat. Emellett egy privát ref-osztályt sablonként is definiálhat, és deklarálhat egy kifejezetten specializált sablon ref-osztályt privát tagként egy nyilvános ref-osztályban.
Ref-osztálysablonok létrehozása
Az alábbi példa bemutatja, hogyan deklarálhat egy privát ref-osztályt sablonként, és hogyan deklarálhat egy standard C++ sablont, és hogyan deklarálhatja mindkettőt egy nyilvános ref-osztály tagjaiként. Vegye figyelembe, hogy a standard C++ sablon windowsos futtatókörnyezet-típus, ebben az esetben platform::String^.
namespace TemplateDemo
{
// A private ref class template
template <typename T>
ref class MyRefTemplate
{
internal:
MyRefTemplate(T d) : data(d){}
public:
T Get(){ return data; }
private:
T data;
};
// Specialization of ref class template
template<>
ref class MyRefTemplate<Platform::String^>
{
internal:
//...
};
// A private derived ref class that inherits
// from a ref class template specialization
ref class MyDerivedSpecialized sealed : public MyRefTemplate<int>
{
internal:
MyDerivedSpecialized() : MyRefTemplate<int>(5){}
};
// A private derived template ref class
// that inherits from a ref class template
template <typename T>
ref class MyDerived : public MyRefTemplate<T>
{
internal:
MyDerived(){}
};
// A standard C++ template
template <typename T>
class MyStandardTemplate
{
public:
MyStandardTemplate(){}
T Get() { return data; }
private:
T data;
};
// A public ref class with private
// members that are specializations of
// ref class templates and standard C++ templates.
public ref class MySpecializeBoth sealed
{
public:
MySpecializeBoth(){}
private:
MyDerivedSpecialized^ g;
MyStandardTemplate<Platform::String^>* n;
};
}
Lásd még
Típusrendszer (C++/CX)
C++/CX nyelvi referencia
Névterek – referencia