Два класса, хранящие указатели друг на друга.
От: muzhig  
Дата: 21.05.11 10:54
Оценка:
Есть два класса, class1 и class2.
У обоих классов есть атрибут, хранящий указатель на экземпляр другого класса.
Лично я не вижу никаких логических проблем для этого(может быть изза неопытности), но компилироваться это отказывается.

вот код:
class1.h:
#ifndef CLASS1_H
#define CLASS1_H

#include <QObject>
#include "class2.h"
class class1 : public QObject
{
    Q_OBJECT
    class2* o;
public:
    explicit class1(QObject *parent = 0);
signals:
public slots:
};

#endif // CLASS1_H


class2.h то же самое, только наоборот:
#ifndef CLASS2_H
#define CLASS2_H

#include <QObject>
#include "class1.h"
class class2 : public QObject
{
    Q_OBJECT
    class1* o;
public:
    explicit class2(QObject *parent = 0);
signals:
public slots:
};
#endif // CLASS2_H


текст ошибки:

In file included from ../untitled6/class1.h:5,
                 from ../untitled6/class1.cpp:1:
../untitled6/class2.h:9: error: ISO C++ forbids declaration of 'class1' with no type
../untitled6/class2.h:9: error: expected ';' before '*' token



Компилятор спотыкается на том месте где class2 объявляет член-указатель еа class1, мол такой класс не объявлен, хотя заголовок "class1.h" включен.

Буду очень благодарен за объяснение в чем я затупил.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.