1
#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"));
错误:“新”之前的预期标识符
错误:“新”之前应为“,”或“...”

我不确定这个初始化是来自 boost 还是 pcl,尽管我在其他文件中使用了同一行并且它有效。感谢您提供的任何帮助。

4

1 回答 1

2

在 C++11 之前你不能就地初始化成员变量,然后你必须使用赋值:

boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer =
    boost::make_shared<pcl::visualization::PCLVisualizer>(new pcl::visualization::PCLVisualizer ("3D Viewer"));

或者您可以在构造函数成员初始化列表中初始化成员:

class Viewer{
public:
    ...

    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;

    ...

    Viewer()
    : viewer (new pcl::visualization::PCLVisualizer ("3D Viewer"))
    {}
};
于 2014-07-16T09:41:25.757 回答