Şimdi PCL (Point Cloud Library) ile C++ şablonunu ele alıyorum ve çözemediğim bir şeyle karşılaştım (daha önce internette ve Stack'da aradım)C++ Şablon - Geçerli bir dönüşüm hatası yok
Features
adında bir şablon sınıfım var.
benim hpp dosyası: cpp dosyasında
#ifndef KeyFeatures_hpp
#define KeyFeatures_hpp
// Declarations and includes
typedef pcl::PointXYZRGB PointTypeRGB;
template<typename FeatureType>
class Features {
public:
Features(const int typeDescriptor);
void setDescriptorExtractor(typename pcl::Feature<PointTypeRGB, FeatureType>::Ptr extractor);
private:
typename pcl::Feature<PointTypeRGB, FeatureType>::Ptr m_descriptor_extractor;
};
#endif /* Features_hpp */
ben tip ne tür olacak onu ve daha sonra bazı eylemi gerçekleştirmek çekleri bir kurucuya sahip. Benim değişken üyesi doldurmak için başarılı olamadı çalıştığınızda
template <typename FeatureType>
Features<FeatureType>::Features(const int type){
//Some code
if (type == DESCRIPTOR_SHOT){
pcl::SHOTEstimationOMP<PointTypeRGB, pcl::Normal, pcl::SHOT352>* shot = new pcl::SHOTEstimationOMP<PointTypeRGB, pcl::Normal, pcl::SHOT352>;
shot->setRadiusSearch (0.02f);
pcl::Feature<PointTypeRGB, pcl::SHOT352>::Ptr descriptor_extractor (shot);
descriptor_extractor->setSearchMethod (pcl::search::Search<PointTypeRGB>::Ptr (new pcl::search::KdTree<PointTypeRGB>));
this->m_descriptor_extractor = descriptor_extractor;//ERROR
setDescriptorExtractor(descriptor_extractor);//ERROR
// Some code
}
hata
son iki hatlarında ortaya çıktı. Her zaman aşağıdaki hata x 10 Ancak ben bütün şablon sınıfı koymak benim cpp dosyanın sonunaerror: no matching conversion for functional-style cast from 'const shared_ptr<pcl::Feature<pcl::PointXYZRGB, pcl::SHOT352> >'
to 'this_type' (aka 'shared_ptr<pcl::Feature<pcl::PointXYZRGB, pcl::ShapeContext1980> >')
(türünde yapılmış 10 çeşit karşılık gelir) var. Örneğin:
template class Features<pcl::SHOT352>;
benim ana işlevinde ben kullanarak bu sınıfı seslendi:
Features<pcl::SHOT352> feature_SHOT(type);
O dönüştürme işlemi mümkün değil gibi görünüyor ..
birisi mümkün olabilir Can bana yardım et ?
Kodumu düzenledim. Feature nesneyi belirli bir türle oluşturdum (burada SHOT one), bu yüzden neden 10 tane diğer tanımlayıcımın 10 kez yanlış olduğunu anlayamıyorum. Şablonla ilgili olarak, bunu yaptım çünkü aksi halde hpp dosyam çok büyük olacak ... Ve ben de temiz tutmak istedim. – lilouch
Çünkü 10 diğer tanıtıcıda da aynı şeyi (yanlış belirli türde) yapıyorsunuz. –
Ancak, nesnemi oluşturduğumda, bu şekilde KeyFeatures feature_SHOT (type); Yani burada tür iyi belirtilmiş ve bu nedenle benim kurucumda uygun tip no oluşturulmalıdır? –
lilouch