Смущает меня в первую очередь то что рядом два очень похожих объявления, одно с ошибкой другое без.
ошибка: ‘ContactFaceElement’ was not declared in this scope
QList<ContactFaceElement *> face;
^~~~~~~~~~~~~~~~~~
ошибка: template argument 1 is invalid
QList<ContactFaceElement *> face;
^
#ifndef ORGANISATIONELEMENT_H
#define ORGANISATIONELEMENT_H
#include <QObject>
#include <elementDB/contactfaceelement.h>
#include <elementDB/geoelement.h>
#include <QStringList>
class OrganisationElement : public QObject
{
Q_OBJECT
public:
explicit OrganisationElement(QObject *parent = 0);
class element
{
QString name;
QList<ContactFaceElement *> face; // ОШИБКА ЗДЕСЬ
QList<GeoElement *> geo;
QStringList sites;
QStringList phone;
};
bool findOrganisation(OrganisationElement::element);
bool findOrganisationFromEmail(QString);
QList<OrganisationElement::element*> elements;
signals:
public slots:
};
#endif // ORGANISATIONELEMENT_H
! два класса
#ifndef CONTACTFACEELEMENT_H
#define CONTACTFACEELEMENT_H
#include <QObject>
#include <elementDB/geoelement.h>
#include <QDate>
#include <QStringList>
#include <elementDB/organisationelement.h>
class ContactFaceElement : public QObject
{
Q_OBJECT
public:
explicit ContactFaceElement(QObject *parent = 0);
class element
{
QString name;
QString last_name;
QString patronymic;
QDate birthday;
GeoElement * geo;
QStringList phone;
};
bool findContactFace(ContactFaceElement::element);
bool findContactFaceFromEmail(QString);
QList<ContactFaceElement::element *> face;
QList <int> id_contact_face;
void readListIdContactFace_FromOrganisation(OrganisationElement*);
signals:
public slots:
private:
void readListIdContactFace_Email(QString);
void addIdContactFace(int);
};
#endif // CONTACTFACEELEMENT_H
#ifndef GEOELEMENT_H
#define GEOELEMENT_H
#include <QObject>
#include <QStringList>
class GeoElement : public QObject
{
Q_OBJECT
public:
explicit GeoElement(QObject *parent = 0);
class g
{
public:
QString city;
QString country;
QString region;
QString state;
int zip_code;
QString street;
int home;
QString home_word;
int box;
int box_word;
QString currency_code;
QString currency;
int id_countries;
int id_cities;
bool biggest_city;
int id_rayon;
QString rayon;
};
bool findGeo(GeoElement::g);
bool findGeoFromEmail(QString);
QList<GeoElement::g*> geos;
QList<int> id_geo;
signals:
public slots:
private:
int idGeoInfoEmail(int);
int idGeoList(int);
void addGeosFromId(int);
};
#endif // GEOELEMENT_H
Ошибка возникает из-за того, что где-то contactfaceelement.h
используется раньше, чем organisationelement.h
. Из-за этого компилятор не находит декларацию класса ContactFaceElement
Используйте predeclaration в organisationelement.h
#ifndef ORGANISATIONELEMENT_H
#define ORGANISATIONELEMENT_H
#include <QObject>
#include <elementDB/contactfaceelement.h>
#include <elementDB/geoelement.h>
#include <QStringList>
// Добавьте предварительное объявление класса
class ContactFaceElement;
class OrganisationElement : public QObject
{
Q_OBJECT
// Дальше ваш код
};
Но вам надо разобраться в порядке использования includ-ов в остальных хидерах
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо, чтобы в Android приложении, можно было скроллить вкладкиДелается сейчас это так:
Мне необходимо использовать функционал Windows Event LogДля доступа к функция данного API нужно добавить dll к проекту