Me gustaría saber si esto es posible. Tengo una función:Crear un pcl :: PointCloud :: Ptr desde un pcl :: PointCloud
pcl::PointCloud<pcl::PointXYZRGB> createPointCloud(std::Vector<Nodes> input)
que devuelve una nube de puntos. Me gustaría saber si es posible tomar esta nube de puntos y hacer un puntero a una copia de la misma. pcl hace punteros a las nubes como esto:
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudPTR(new pcl::PointCloud<pcl::PointXYZRGB>)
He intentado hacer esto:
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudPTR(createPointCloud(nodeList))
Esto resulta en un error decir bastante obvio. createPointCloud no devuelve un puntero a una nube.
También he intentado esto:
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudPTR = &createPointCloud(nodeList)
y esto:
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudPTR(&createPointCloud(nodeList))
y esto se traduce en el error de compilación: "tomar la dirección del temporal"
es la única opción para ¿La función devuelve un tipo de puntero o hay una manera de hacer lo que estoy pidiendo?
EDIT:
Tanto de las respuestas a continuación son correctas, he otorgado Jonathon la garrapata correcta mientras se ponía en primera este momento.
Buena llamada esto es correcto. –
@Ben sí, él también. Cualquiera de los dos métodos debería funcionar, dependiendo de cómo devuelva su clase desde su función. ¿Qué compilador estás usando? – johnathon
cmake, así que supongo g ++ –