c ++重新定义了一个类

时间:2010-09-13 06:56:54

标签: c++

我想用c ++(非clr)重新定义一个类。这就是原因

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
}

或使用虚拟功能等。有什么想法我会怎么做这个课程?感谢。

顺便说一句,我知道有人会问这是否真的有必要,所以是的,是的。

1 个答案:

答案 0 :(得分: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(){}

BTW,这不称为redefine。该技术是forward declare然后定义它。