#ifndef VIEWER_H #define VIEWER_H #include <iostream> #include "../../Spheres/spheres.h" #include "../../Odometry/odometry.h" #include "../io/io.h" #include <limits> #include <utility> #include <algorithm> #include <time.h> #include <cv.h> #include <opencv/highgui.h> #include <opencv2/core/eigen.hpp> #include <Eigen/Dense> #include <Eigen/SVD> #include <Eigen/LU> #include <unsupported/Eigen/MatrixFunctions> #include <boost/thread/thread.hpp> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/visualization/cloud_viewer.h> #include <pcl/visualization/pcl_visualizer.h> #include <pcl/common/common_headers.h> #include <pcl/filters/voxel_grid.h> #include <pcl/filters/extract_indices.h> #include <pcl/filters/passthrough.h> #include <pcl/common/transforms.h> //#include <pcl/registration/icp.h> // conflict with opencv flann //#include <pcl/features/normal_3d.h> // conflict with opencv flann //#include <pcl/features/integral_image_normal.h> // conflict with opencv flann //const double pi = M_PI; class Viewer{ public: pcl::PointCloud<pcl::PointXYZRGB> cloud, globalmap; pcl::PointXYZRGB point; pcl::PassThrough<pcl::PointXYZRGB> filter_pass_x, filter_pass_y, filter_pass_z; pcl::VoxelGrid<pcl::PointXYZRGB> filter_voxel; boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer")); void viewgenpcl(Sphere &S, Odometry &Odo); }; #endif // VIEWER_H
错误的来源是以下代码行:
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer"));
Error: expected identifier before 'new' Error: expected ',' or '...' before 'new'
我不确定这个初始化是来自boost还是pcl,尽管我在其他文件中使用了相同的行,并且它起了作用。感谢您提供的任何帮助。
在C++11之前,您无法就地初始化成员变量,然后必须使用赋值:
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer = boost::make_shared<pcl::visualization::PCLVisualizer>(new pcl::visualization::PCLVisualizer ("3D Viewer"));
或者可以在构造函数中初始化成员 member initialization list :
class Viewer{ public: ... boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer; ... Viewer() : viewer (new pcl::visualization::PCLVisualizer ("3D Viewer")) {} };