2010-09-13 81 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