我使用了一个库(我无法修改)并声明了一个 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 。
答案 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
的类型相同。