2015-09-27 223 views
0

我想创建一些私有变量,但是当我编译程序时出现错误。如果我移动类SimpleOpenNIViewer上面的变量比它的工作。在C++中声明私有变量

这是错误消息: /Workspace/virtual-reality/main.cpp:16:56:错误:前“新” 点云:: PTR cloud_previous2(新点云)预期标识符;

这就是我写代码的方法。谁能告诉我为什么这不起作用?

class SimpleOpenNIViewer 
    { 
     private: 
      PointCloud<PointXYZRGBA>::Ptr cloud_previous2 (new PointCloud<PointXYZRGBA>); 
      PointCloud<PointXYZRGBA>::Ptr cloud_previous1 (new PointCloud<PointXYZRGBA>); 
      PointCloud<PointXYZHSV>::Ptr cloud_HSVPrev2(new PointCloud<PointXYZHSV>); 
      PointCloud<PointXYZHSV>::Ptr cloud_HSVPrev1(new PointCloud<PointXYZHSV>); 
      PointCloud<PointXYZHSV>::Ptr cloud_HSVCurr(new PointCloud<PointXYZHSV>); 
+0

请分享你得到的错误。 –

+0

_“如果我移动类上面的变量”_。你的意思是让他们全局变量? –

+0

是的,如果我将它们移动到类SimpleOpenNIViewer之上。通过这种方式,它可以编译 –

回答

0

确保您已包含变量所依赖的所有相关标题或转发声明类。

您的类声明也缺少右大括号和半冒号。

0

试试这个:

class SimpleOpenNIViewer 
    { 
     private: 
      PointCloud<PointXYZRGBA>::Ptr cloud_previous2 = new PointCloud<PointXYZRGBA>; 
      PointCloud<PointXYZRGBA>::Ptr cloud_previous1 = new PointCloud<PointXYZRGBA>; 
      PointCloud<PointXYZHSV>::Ptr cloud_HSVPrev2 = new PointCloud<PointXYZHSV>; 
      PointCloud<PointXYZHSV>::Ptr cloud_HSVPrev1 = new PointCloud<PointXYZHSV>; 
      PointCloud<PointXYZHSV>::Ptr cloud_HSVCurr = new PointCloud<PointXYZHSV>; 
+0

我尝试过,但是我得到了一个不同的错误。 /Workspace/virtual-reality/main.cpp:16:88:警告:非静态数据成员初始值设定项仅适用于-std = C++ 11或-std = gnu ++ 11 [默认情况下启用] PointCloud :: Ptr cloud_previous2 = new PointCloud ; –

+0

或者在这里声明变量并在构造函数中新建它们。 – pdm2011

+0

@NerimanArif,所以传递'-std = C++ 11'到编译器。 – chris