模板类型未匹配
template type miss match
我有这个代码:
template <typename T>
struct ObjectPCD
{
bool bcl;
typename pcl::PointCloud<T>::Ptr pcd_object;
};
class SegmentingTool
{
public:
template <typename T>
std::vector<ObjectPCD> classifyParts(typename std::vector<pcl::PointCloud<T> >* resultVec)
{
std::vector<ObjectPCD> rArt;
return rArt;
}
};
我不明白为什么会出现此编译错误:
error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’
std::vector<ObjectPCD> classifyParts(typename std::vector<pcl::PointCloud<T> >* resultVec)
当你写:
std::vector<ObjectPCD>
std::vector
期望第一个模板参数为 type。但是 ObjectPCD
不是类型 - 它是 class 模板:
template <typename T>
struct ObjectPCD { ... };
也许你的意思是:
std::vector<ObjectPCD<T>>
?
您的通用代码存在一些严重错误。首先 typnename
不应该在参数列表中。然后你也忘了添加 <T>
到 ObjectPCD
(顺便说一下,这是导致错误的原因)。
您的代码已修复:
template <typename T>
std::vector<ObjectPCD<T> > classifyParts(std::vector<pcl::PointCloud<T> >* resultVec)
{
std::vector<ObjectPCD<T> > rArt;
return rArt;
}
我有这个代码:
template <typename T>
struct ObjectPCD
{
bool bcl;
typename pcl::PointCloud<T>::Ptr pcd_object;
};
class SegmentingTool
{
public:
template <typename T>
std::vector<ObjectPCD> classifyParts(typename std::vector<pcl::PointCloud<T> >* resultVec)
{
std::vector<ObjectPCD> rArt;
return rArt;
}
};
我不明白为什么会出现此编译错误:
error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’
std::vector<ObjectPCD> classifyParts(typename std::vector<pcl::PointCloud<T> >* resultVec)
当你写:
std::vector<ObjectPCD>
std::vector
期望第一个模板参数为 type。但是 ObjectPCD
不是类型 - 它是 class 模板:
template <typename T>
struct ObjectPCD { ... };
也许你的意思是:
std::vector<ObjectPCD<T>>
?
您的通用代码存在一些严重错误。首先 typnename
不应该在参数列表中。然后你也忘了添加 <T>
到 ObjectPCD
(顺便说一下,这是导致错误的原因)。
您的代码已修复:
template <typename T>
std::vector<ObjectPCD<T> > classifyParts(std::vector<pcl::PointCloud<T> >* resultVec)
{
std::vector<ObjectPCD<T> > rArt;
return rArt;
}