2013-06-23 71 views
-1

無法識別我有這個問題C++類的變量聲明abc.h在abc.cpp

"abc.h" 

Class abc{ 
Private:  

    bool ** xyz; 

Public: 
abc * fun(); 
} 

"abc.cpp" 

#include "abc.h" 

abc abc::*fun(){ 
xyz=new bool*[10]; 
    for(int i=0;i<10;i++) 
    { 
    xyz[i]= new bool[10]; 
    } 
} 

我正在XYZ未聲明的標識符。請幫助我。我也曾嘗試

abc::xyz=new bool*[10]; 

它也沒有工作

+1

你沒有把你的abc.h文件包含到abc.cpp文件中,請包括它。 –

+1

是否正確添加了「包含」部分?類被寫成大寫。 abc不是一個靜態字段,而是一個對象字段。請發佈整個代碼 – Max

+0

順便說一句......最好不要在.h文件裏面定義類,否則你很容易陷入麻煩。 .h是更好的聲明(沒有類體,聲明在類名後面完成;) – Max

回答

0

您顯示的代碼無法提供您發佈的錯誤消息。


將正是這種進入頭文件:

class abc { 
    public: 
    abc* fun(); 
    private:  
    bool ** xyz; 
}; 

將正是這種到源文件:

#include "abc.h" 

abc* abc::fun() { 
    xyz=new bool*[10]; 
    for(int i=0;i<10;i++) 
    { 
    xyz[i]= new bool[10]; 
    } 
    return this; // What would you like to return??? 
} 

這具有至少進行編譯。


我注意到你發佈的代碼中有一些奇怪的東西。關鍵字class,publicprivate不是以大寫字母開頭。

類聲明後面跟着一個;

雖然abc abc::*fun()可能存在,但我幾乎可以肯定你的意思是abc* abc::fun()

abc::fun()不返回任何東西。

+0

我知道關鍵詞和關於;。這些不是我得到錯誤的原因:)我想返回abc類的指針。 –

+0

@ user1930448那麼,在這種情況下,如代碼中所示,返回'this'。 – Ali

+0

我已經聲明瞭一個private int num變量,我正在修改它的值。我想在其他函數中再次使用這個變量num值。這可能嗎?因爲我正在獲得垃圾價值。該值被刪除automaticaly功能退出我認爲... –

1

編譯器需要看到abc類型的定義,要做到這一點,你需要包括它定義在cpp文件頭。

「abc.h」

class abc{ 
bool ** xyz; 
void fun(); 
}; 

「abc.cpp」

#include "abc.h"   <--------------This! 
void abc::fun(){ 
**xyz=new bool [10]; 
} 
+0

我已經包含在abc.cpp已包含標題.. –

1

此:

abc abc::*fun() 

應該是這樣的:

abc * abc::fun() 
+0

非常感謝你保存我的一天..... :) –