特殊なテンプレート関数の呼び出しに問題があります。
私のコードは次のようになります:
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;
が、同じエラーが再び発生します。
私は必死になってライブラリ内の1つの問題をデバッグしようとしています。これは、1つのプライベートマップにアクセスしてそれを繰り返すことができれば非常に簡単にデバッグできますが、時間がかかるため、ライブラリ全体をコンパイルできません(そして私はそれを覗き見したい-私はそれが間違っていることを知っていますが、私はこれで一日中苦労しています)
コンパイラはVC++10です。
ありがとうございました