2016-02-13 92 views
0

我想用指針來指定一個派生類的基類,問題是,這兩個類有不同數量的模板:C++從派生類轉換爲與基類不同的模板數量

Base 
pcl::Feature< PointInT, PointOutT > 
Derived 
pcl::FeatureFromNormals< PointInT, PointNT, PointOutT > 

inheritance diagram可以看出,這兩個班都是父親和孩子。

但是當我嘗試到派生類分配給基類指針,我只得到這個錯誤:

error: cannot convert ‘pcl::FeatureFromNormals<pcl::PointXYZRGBA, pcl::Normal, pcl::FPFHSignature33>*’ to ‘pcl::Feature<pcl::PointXYZRGBA, pcl::Normal>*’ in initialization 

是否有可能分配一個派生類的基類與不同數量的模板?

回答

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> 
+0

你是對的,我不是很習慣C++的語法和我,雖然你不能在派生類中 – Luca

+1

@Luca混合了模板的順序(即模板參數的順序和數量)完全不重要。它只取決於如何聲明繼承關係。 – songyuanyao