C++ 将模板化智能指针类型作为模板参数传递
我试图将smart_指针作为模板参数传递,而不是将该类型用于动态转换等 但是还有一个catch-smart_指针可以有很多类型,比如std::shared_ptr、boost::shared_ptr、std::weak_ptr等等 因此,我最后尝试的是用正确的语法替换C++ 将模板化智能指针类型作为模板参数传递,c++,templates,C++,Templates,我试图将smart_指针作为模板参数传递,而不是将该类型用于动态转换等 但是还有一个catch-smart_指针可以有很多类型,比如std::shared_ptr、boost::shared_ptr、std::weak_ptr等等 因此,我最后尝试的是用正确的语法替换typename SmartPointerType: template < typename SmartPointerType<DerivedClass> > std::vector<SmartPoin
typename SmartPointerType
:
template < typename SmartPointerType<DerivedClass> >
std::vector<SmartPointerType<DerivedClass>> filterByType()
{
std::vector<SmartPointerType<DerivedClass>> newList;
for ( int i = 0; i < iTerrainList.size(); i++)
{
SmartPointerType<DerivedClass> castedTerrain = Cast<DerivedClass>(iTerrainList[i]);
if ( castedTerrain )
newList.push_back(castedTerrain);
}
return newList;
}
template
std::vector filterByType()
{
std::向量新列表;
对于(int i=0;i
“Cast()”接受我感兴趣的任何类型的智能指针
我发现我可以用
template <template <typename Type> class TemplateType>
模板
但它在我的c++03编译器中不起作用
我知道我可以使用“.get()”,但我很好奇,没有“.get()”,我怎么能让它工作呢 让它在任何类型上工作即可:
template <typename DerivedClassPtr>
std::vector<DerivedClassPtr> filterByType()
{
std::vector<DerivedClassPtr> newList;
for ( int i = 0; i < iTerrainList.size(); i++)
if ( DerivedClassPtr terrain = Cast<typename DerivedClassPtr::element_type>(iTerrainList[i]) )
newList.push_back(terrain);
return newList;
}
模板
std::vector filterByType()
{
std::向量新列表;
对于(int i=0;i
此处,对模板类型的要求是:
- 可以存储在向量中(因此必须是可复制的)
- 具有
(因此,不管好坏,原始指针都不起作用;您可以使用自己在C++03中实现的类型特征来修复此问题)元素类型
- 被您的
Cast()函数接受
- 在布尔上下文中可用
template <typename DerivedClassPtr>
std::vector<DerivedClassPtr> filterByType()
{
std::vector<DerivedClassPtr> newList;
for ( int i = 0; i < iTerrainList.size(); i++)
if ( DerivedClassPtr terrain = Cast<typename DerivedClassPtr::element_type>(iTerrainList[i]) )
newList.push_back(terrain);
return newList;
}
模板
std::vector filterByType()
{
std::向量新列表;
对于(int i=0;i
此处,对模板类型的要求是:
- 可以存储在向量中(因此必须是可复制的)
- 具有
(因此,不管好坏,原始指针都不起作用;您可以使用自己在C++03中实现的类型特征来修复此问题)元素类型
- 被您的
Cast()函数接受
- 在布尔上下文中可用