我有两个类声明如下,但我得到编译错误,似乎是由于循环#include。有谁知道如何解决这个问题?
我的目的是让子类保持指向父类的指针,以便子进程可以访问父进程的方法和属性。
#ifndef PARENT_H
#define PARENT_H
#include "child.h"
class Parent
{
public:
Child* mychild;
Parent();
};
#endif // PARENT_H
#ifndef CHILD_H
#define CHILD_H
#include "parent.h"
class Child
{
public:
Parent* myparent;
Child();
};
#endif // CHILD_H
答案 0 :(得分:2)
只要您只存储指向该类的指针,您就不需要在标题中提供完整的类定义,您可以使用前向类声明,如下所示:
#ifndef PARENT_H
#define PARENT_H
class Child;
class Parent
{
public:
Child* mychild;
Parent();
};
#endif // PARENT_H
#ifndef CHILD_H
#define CHILD_H
class Parent;
class Child
{
public:
Parent* myparent;
Child();
};
#endif // CHILD_H
然后必须在child.cpp中包含parent.h,在parent.cpp中包含child.h。