我想用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
}
或使用虚拟功能等。有什么想法我会怎么做这个课程?感谢。
顺便说一句,我知道有人会问这是否真的有必要,所以是的,是的。
答案 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
然后定义它。