模板类型未匹配

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;
     }