相互递归类
如何在 C++ 中实现相互递归类?像这样的东西:
/*
* Recursion.h
*
*/
#ifndef RECURSION_H_
#define RECURSION_H_
class Class1
{
Class2* Class2_ptr;
public:
void Class1_method()
{
//...
(*Class2_ptr).Class2_method();
//...
}
};
class Class2
{
Class1* Class1_ptr;
public:
void Class2_method()
{
//...
(*Class1_ptr).Class1_method();
//...
};
};
#endif /* RECURSION_H_ */
How do I implement mutually recursive classes in C++? Something like:
/*
* Recursion.h
*
*/
#ifndef RECURSION_H_
#define RECURSION_H_
class Class1
{
Class2* Class2_ptr;
public:
void Class1_method()
{
//...
(*Class2_ptr).Class2_method();
//...
}
};
class Class2
{
Class1* Class1_ptr;
public:
void Class2_method()
{
//...
(*Class1_ptr).Class1_method();
//...
};
};
#endif /* RECURSION_H_ */
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用前向声明。
由于 Class1 中的方法将取决于 Class2 的实际定义,因此方法定义必须出现在 Class2 声明之后,因为您不能仅使用前向声明中的方法。
另一方面,这种紧密耦合通常表明设计不好。
Use forward declaration.
Because the methods in Class1 will depend on the actual definition of Class2, method definitions must occur after the Class2 declaration, since you can't use methods from only a forward declaration.
On the other hand, this kind of tight coupling is usually indicative of bad design.
预先声明其中一个类,例如
Class2
Predeclare one of the classes, for example
Class2
在顶部向前声明一个类(或两个类),例如:
并在定义两个类之后定义方法(即,外线):
Forward declare one of the classes (or both) on the top, eg.:
and define the methods after both of the classes are defined (that is, out-of-line):