我在调用专用模板函数时遇到问题。
我的代码是这样的:
namespace{
struct Y {};
}
template<>
bool pcl::visualization::PCLVisualizer::addPointCloud<Y>(const typename pcl::PointCloud< Y >::ConstPtr &cloud, const std::string &id, int viewport);
呼叫地点是:
pcl::PointCloud<Y>::Ptr cloud(new pcl::PointCloud<Y>);
visualizer->addPointCloud(cloud, "cloud", 0);
我得到的错误是
'bool pcl::visualization::PCLVisualizer::addPointCloud(const boost::shared_ptr<T> &,const std::string &,int)' : cannot convert parameter 1 from 'boost::shared_ptr<T>' to 'const boost::shared_ptr<T> &'
以下是库中的一些声明和 typedef:
typedef boost::shared_ptr<PointCloud<PointT> > Ptr;
typedef boost::shared_ptr<const PointCloud<PointT> > ConstPtr;
template <typename PointT> bool pcl::visualization::PCLVisualizer::addPointCloud(
const typename pcl::PointCloud<PointT>::ConstPtr &cloud,
const std::string &id, int viewport
)
我已经尝试过boost::shared_ptr<const pcl::PointCloud<Y> > cloud;
,但同样的错误再次出现。
我正在拼命尝试调试库中的一个问题,如果我可以访问一个私有地图并遍历它,这将非常容易调试,但我无法编译整个库,因为这需要一些时间(我只是想看看它——我知道这是错的,但我整天都在为此苦苦挣扎)
编译器是VC++ 10。
谢谢