2015-09-27 64 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