Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Шаблоны C++ не публикуются в метаданных и поэтому не могут иметь быть открытыми или защищенными в программе. Конечно внутри программы можно использовать стандартные шаблоны C++. Кроме того, можно определить закрытый класс ссылки в качестве шаблона и объявить явно специализированный класс ссылки шаблона в качестве закрытого члена открытого класса ссылки.
Создание шаблонов классов ссылок
В следующем примере показано, как объявить закрытый класс ссылки в виде шаблона, как объявить стандартный шаблон C++ и как объявить такие класс и шаблон в качестве членов открытого класса ссылки. Обратите внимание, что стандартный шаблон C++ может быть специализирован по типу среда выполнения Windows, в данном случае — 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;
};
}
См. также
Система типов (C++/CX)
Справочник по языку C++/CX
Справочник по пространствам имен