我想用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;
}
Run Code Online (Sandbox Code Playgroud)
现在当然这不是我真正的代码,但我认为你可以看到问题.我希望我的宝贝类可以访问主类,问题是在编译时它不知道MainClass是否存在,所以要正常修复它我会将MainClass放在BabyClass之上,但如果我这样做我就可以'有一个BabyClass的向量,因为编译器不会知道BabyClass.我知道你可以做类似的功能
int function(string hello);
Run Code Online (Sandbox Code Playgroud)
然后
int function(string hello)
{
code
}
Run Code Online (Sandbox Code Playgroud)
或使用虚拟功能等.有什么想法我会怎么做这个课程?谢谢.
顺便说一句,我知道有人会问这是否真的有必要,所以是的,是的.
试试这个向前宣布的安排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(){}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这并没有被称为redefine.该技术是forward declare然后定义它.