【发布时间】:2016-11-18 12:20:26
【问题描述】:
我正在尝试将 smart_pointer 作为模板参数传递,而不是将类型用于动态转换等。
但还有一个问题 smart_pointer 可以有多种类型,例如 std::shared_ptr、boost::shared_ptr、std::weak_ptr 等等。
所以我最终要尝试的是用正确的语法替换typename SmartPointerType<DerivedClass>:
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;
}
"Cast()" 接受我感兴趣的任何类型的智能指针。
我发现我可以使用类似的东西
template <template <typename Type> class TemplateType>
但它不适用于我的 c++03 编译器。
我知道我可以使用“.get()”,但我很好奇如何在没有“.get()”的情况下让它工作。
【问题讨论】: