2015-06-02 3 views
1

Как я могу сделать QList так, чтобы этот список мог содержать информацию из более чем одного класса (классы управляются двумя Map-Containers)?QList в классах с QT Creator/C++

Это мои 4-х классов:

Класс для лекции:

class Veranstaltung 
    { 
    private: 
     QMap<QString, LV >myLV; 
    public: 
    Veranstaltung() {} 
    void listLV(QTextStream& out) const; 
    ... 
    }; 

    #endif // 

Класс для профессорские

LIST_H 

    class ProfessurList 
    { 
    private: 
     QMap<QString, Professur> myProfessuren; 
    public: 
     ProfessurList() {} //kann man weglassen 
     void addProf(QTextStream& in,QTextStream& out); 
     void listProf(QTextStream& out) const; //Warum const? 
     ... 
    }; 

    #endif // PROFLIST_H 

Еще один класс для лекций, где определяются частные и государственные:

#ifndef LV_H 
#define LV_H 

class LV 
{ 
private: 
    QString myNummer; 
    QString myBezeichnung; 
    QString myTyp; 
public: 
    LV(const QString& nummer, const QString& bezeichnung, const QString& typ): 
     myNummer(nummer), myBezeichnung(bezeichnung), myTyp(typ) 

    {} 
    QString nummer() const { return myNummer;} 

    ... 
}; 
QTextStream& operator<<(QTextStream& out, const LV& l); 

#endif // LV_H 

Другой класс для proffessorships, где определяются частные и лобковые:

#ifndef PROF_H 
    #define PROF_H 


    class Professur 
    { 
    private: 
    QString myKuerzel; 
    QString myName; 
    QString myLehrstuhlinhaber; 
    public: 
    Professur(const QString& kuerzel, const QString& name, const QString& lehrstuhlinhaber): 
     myKuerzel(kuerzel), myName(name), myLehrstuhlinhaber(lehrstuhlinhaber) 
    {} 

    ... 
    }; 
    QTextStream& operator<<(QTextStream& out, const Professur& pr); 

    #endif // PROF_H 
+0

Я не уверен, что вы просите. Не могли бы вы рассказать о том, что вы пытаетесь сделать, и о том, как это относится к фрагментам кода, которые вы включили? – MrEricSir

+0

Не могли бы вы прояснить, что именно нужно хранить в QList? – demonplus

+0

Для хранения гетерогенных данных используйте 'QVariant', в частности -' QVariantList'. – Amartel

ответ

1

Не можете просто создать объект-структуру с X? Как:

Struct ProfessorsAndLecturs 
{ 
    Veranstaltung v; 
    LEctures l; 
    ... 
}; 
ProfessorsAndLecturs pal; 
pal.v = ...; 
pal.l = ...; 

QList<ProfessorsAndLecturs> list; 
list.append(pal); 

и позже:

list.at(0).l; 
etc. 

Если это то, что вы просите.

+0

Спасибо @kajojeq, но я должен сделать это с помощью классов, я определил классы для профессоров и лекций (3 и 4) и сделал два контейнера для карт, в которых элементы должны работать (и сохраняться в текстовом файле в cpp-файлы для QLists), я сделал это с 1 и 2, определяя дополнительные классы как QLists и это, что мне еще нужно делать: писать лекции, которые находятся в одном из профессоров, и я не знаю, как я могу достичь информация о обоих классах и где: в новом текстовом файле (cpp) или что-то должно быть определено в одном из .h-файлов –

+0

@DianaPapukchieva Довольно сложно понять, о чем вы просите, но я стараюсь: может быть, вам нужно список лекций, который имеет этот proffesure, поэтому в файле proffesures.h добавьте '#include" LV.h "' позже 'QList LectureList;' тогда, когда вы добавляете proffesure, добавьте лекции и в этот список, и теперь у вас есть объектная профайла с список лекций, которые он имеет. Теперь объект имеет: object.lectureList; Может быть, проще было бы, если бы вы записали целую задачу, которую вам нужно сделать. – kajojeq

+0

Я постараюсь так в «LV.h», спасибо большое, я не могу написать всю свою задачу, потому что это домашнее задание, и я должен решить его в одиночку, еще одно спасибо. :) –

Смежные вопросы