转发声明模板的成员typedef

时间:2018-02-19 17:08:18

标签: c++ c++11

我使用了一个库(我无法修改)并声明了一个 PointCloud 模板,其中包含 Ptr typedef

namespace pcl
{
    template <typename PointT>
    class PCL_EXPORTS PointCloud
    {
        ...
        typedef boost::shared_ptr<PointCloud<PointT> > Ptr;
    }
}

现在,我需要转发声明 Ptr ,我不知道该怎么做。我做完了

namespace pcl
{
    class PointXYZ;
    template<class pointT> class PointCloud;
}

但我被困在这里,无论我做什么,我似乎无法转发声明 Ptr typedef

有什么想法吗?

---------- ---------- EDIT

我需要这个前向声明的原因是我需要将一个函数声明为我自己的头。我希望这个功能能够采用 PointCloud&lt; PointXYZ&gt; :: Ptr 作为参数,因为我想要输入函数的 PointCloud 存储在 PointCloud&lt; PointXYZ&gt; :: Ptr

1 个答案:

答案 0 :(得分:2)

Typedef是类型的别名。如果这有意义的话,它们本身就不是类型。

namespace pcl
{
  class PointXYZ;
  template<class pointT> class PointCloud;
}
template<class T>
using foo = boost::shared_ptr<pcl::PointCloud<T>>;

foo<X>pcl::PointCloud<T>::Ptr的类型相同。