0

我有两个声明如下的类,但我得到编译错误,这似乎是由于循环#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
4

1 回答 1

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。

于 2013-06-22T16:42:06.253 回答