Qt: utilisation incorrecte de type incomplète et en avant de la déclaration de

J'ai une certaine incompréhension:

A. h

#ifndef A_H
#define A_H

#include "B.h"

class A : public B
{
    Q_OBJECT
public:
    A();
};
#endif

A.cpp

#include "A.h"
A::A()
{
    B::ui->blancH2->setValue(2);
}

B. h

#include <QWidget>
#ifndef B_H
#define B_H

namespace Ui {
    class B;
}
class B
{
    Q_OBJECT
public:
    explicit B(QWidget *parent = 0);

public:
    Ui::B *ui;
};

#endif 

Comme résultat de la compilation j'ai des erreurs:
A.cpp: Dans le constructeur 'A::A()': utilisation non valide de type incomplète "classe Ui::B'
B. h: avant la déclaration de la classe Ui::B'

Quelqu'un peut-il expliquer pourquoi j'ai cette erreur?

  • Astuce: B et Ui::B ne sont pas de la même classe. Elles sont totalement différentes.
  • Vous disposez de deux différentes classes de B ici, Ui::B et juste B. Êtes-vous sûr que c'est ce que vous voulez?
  • comme Mike Seymour remarqué, vous devez inclure dans a.cpp fichier même en-tête, qui est inclus dans b.cpp qui contient la définition de Ui::B classe.
InformationsquelleAutor ibn_maksimys | 2014-01-14