我有这段代码:
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)
答案 0 :(得分:2)
当你写:
std::vector<ObjectPCD>
std::vector
需要第一个模板参数的类型。但是ObjectPCD
不是类型 - 它是一个类模板:
template <typename T>
struct ObjectPCD { ... };
也许你的意思是:
std::vector<ObjectPCD<T>>
答案 1 :(得分:1)
您的通用代码存在严重错误。首先,typnename
不应该在参数列表中。然后你也忘了将<T>
添加到ObjectPCD
(这会导致错误)。
以下是您的代码修复:
template <typename T>
std::vector<ObjectPCD<T> > classifyParts(std::vector<pcl::PointCloud<T> >* resultVec)
{
std::vector<ObjectPCD<T> > rArt;
return rArt;
}