我正在尝试使用指针将Derived类分配给Base类,问题是这两个类具有不同数量的模板:
Base
pcl::Feature< PointInT, PointOutT >
Derived
pcl::FeatureFromNormals< PointInT, PointNT, PointOutT >
从inheritance diagram可以看出,这两个班是父亲和孩子。
但是当我尝试将Derived类分配给Base类的指针时,我只获得了这个错误:
error: cannot convert ‘pcl::FeatureFromNormals<pcl::PointXYZRGBA, pcl::Normal, pcl::FPFHSignature33>*’ to ‘pcl::Feature<pcl::PointXYZRGBA, pcl::Normal>*’ in initialization
是否可以将Derived类分配给具有不同数量的模板的Base类?
答案 0 :(得分:3)
该问题与模板参数的不同数量(和顺序)无关,您只是使用了错误的基类类型。
正如文件所述,
pcl::FeatureFromNormals< PointInT, PointNT, PointOutT >
公众派生自
pcl::Feature< PointInT, PointOutT >
对于你的情况,
pcl::FeatureFromNormals<pcl::PointXYZRGBA, pcl::Normal, pcl::FPFHSignature33>
的基类应该是
pcl::Feature<pcl::PointXYZRGBA, pcl::FPFHSignature33>
不是
pcl::Feature<pcl::PointXYZRGBA, pcl::Normal>