Ich versuche, Template-Klassen zu verwenden, um meine Funktionen unabhängig vom Punkttyp zu verwenden. Ich habe das Tutorial "Eine neue PCL-Klasse schreiben" gelesen, aber ich habe es nicht verstanden. Ich werde die einfachste Klasse teilen, in der ich versuche, diese Technik zu verwenden. Seine einzige Funktion besteht darin, den KD-Baum einer Punktwolke am richtigen Punkt der Ausführung eines Elternbaums von Prozessen zu erzeugen.Klassentemplate zur Verarbeitung von pcl :: PointCloud-Objekten mit unterschiedlichen Punkttypen
KdtreeBuilder_Process.h
#ifndef KDTREEBUILDER_PROCESS_H
#define KDTREEBUILDER_PROCESS_H
#include "ProcessManager/ProcessConcurrent.h" //Parent class
#include <pcl/kdtree/kdtree_flann.h>
class KdtreeBuilder_Process:public ProcessConcurrent
{
public:
KdtreeBuilder_Process(pcl::PointCloud<pcl::PointXYZ>::Ptr inputCloud,pcl::KdTree<pcl::PointXYZ>::Ptr cloudKdtree);
virtual void run(); //method that executed when the process starts
private:
pcl::PointCloud<pcl::PointXYZ>::Ptr mInputCloud;
pcl::KdTree<pcl::PointXYZ>::Ptr mCloudKdtree;
};
#endif // KDTREEBUILDER_PROCESS_H
KdtreeBuilder_Process.cpp
#include "KdtreeBuilder_Process.h"
KdtreeBuilder_Process::KdtreeBuilder_Process(pcl::PointCloud<pcl::PointXYZ>::Ptr inputCloud,pcl::KdTree<pcl::PointXYZ>::Ptr cloudKdtree):
mInputCloud(inputCloud),mCloudKdtree(cloudKdtree)
{
}
void KdtreeBuilder_Process::run(){
mCloudKdtree->setInputCloud(mInputCloud);
}
Meine Absicht ist es, diese Klasse mit einem beliebigen Punkt Typ zu verwenden, die XYZ-Koordinaten enthält
Vielen Dank für Ihre Unterstützung . BR
Vielen Dank für Ihre Antwort @ W.F. Sieht einfach aus, aber ich habe Probleme mit den Konstruktor Parametern. Ist es nicht möglich Boost Shared Pointer im Konstruktor einer Template-Klasse zu integrieren? Ich habe den Fehler "C2061: Syntaxfehler: Bezeichner 'Ptr'" –