2010-09-13 116 views
1

我想在C++(非clr)中重新定義一個類。這是原因C++重新定義類

class BabyClass 
{ 
    public: 
     string Name; 
     int getSiblings(MainClass &mclass) 
     { 
      int c = mclass.size(); 
      for(int i=c;i>0;--i) 
      { 
       if(mclass.at(i).Name != Name) 
        cout << mclass.at(i).Name; 
      } 
     } 
} 
class MainClass 
{ 
    public: 
     vector<BabyClass> babies; 
} 

現在當然這不是我的真實代碼,但我認爲你可以看到問題。 我想讓我的寶貝類訪問主類,問題是在編譯時它不知道MainClass存在,所以通常我會把MainClass放在BabyClass上面,但如果我這樣做,我可以沒有BabyClass的矢量,因爲編譯器不會了解BabyClass。 我知道與函數,你可以這樣做

int function(string hello); 

後來

int function(string hello) 
{ 
    code 
} 

或使用虛函數和這樣。任何想法,我怎麼會用類來做到這一點?謝謝。

而順便說一句,我知道有人會問是否真的有必要,所以是的,它是。

回答

6

試試這個安排,它轉發宣告MainClass

class MainClass; 

class BabyClass 
{ 
public: 
string Name; 
int getSiblings(MainClass &mclass); 
}; 

class MainClass 
{ 
public: 
vector<BabyClass> babies; 
}; 

int BabyClass::getSiblings(MainClass &mclass) 
{ 
    // your code which uses mclass 
return 0; 
} 

int main(){} 

順便說一句,這不叫redefine。該技術是forward declare然後定義它。

+1

謝謝。我以爲我嘗試過,但顯然不是:P。 – 2010-09-13 07:10:54