STL und in Klassen



  • Hi
    ich hab folgendes Proglem: Ich möchte in einer Klasse einen STL Container (deque)verwenden. Leider funzt das nicht so wie ich es möchte:

    class Nachricht
      {
    	public:
    		deque<time_t> gelb();
    		Nachricht():gelb(0)
    			{
    			}
    
      };
    

    ich möchte danach in einer Funktion mittels gelb.front() elemente in den Container einfügen.

    Leider ist der Container nicht benutzbar(der meckert das der linke teil von front() ne klasse usw sein muss) und es kommt zusätzlich folgende Fehlermeldung:
    error C2436: 'gelb': Memberfunktion der geschachtelte Klasse in der Liste der Konstruktorinitalisierungen

    Würde mich sehr freun wenn mir jemand bei diesem Problem helfen kann.



  • deque<time_t> gelb(); deklariert eine Funktion namens gelb, die ein deque<time_t> zurückgibt.
    Wenn Du in der Klasse ne deque haben willst, dann mußt Du

    deque<time_t> gelb; schreiben.

    MfG Jester



  • ah THX jetzt funzts



  • Was ich interesant finde ist, das du deque und nicht std::deque schreibst. Das bedeutet ja, das deine Klasse nur lokal in einem Modul definiert wird. Oder du hast ein using im Hrader, was böse wäre.



  • #include<iostream>
    #include<ctime>
    #include<deque>
    #include<conio.h>
    using namespace std;
    

    Meinst du das ?? Was ist daran böse ?

    Ich hab leider nicht viel erfahrung mit der STL.

    Kann man auch arrays von containrn machen ?
    Das hier funtu leider nicht:

    class 
      {
    	public:
    		deque<time_t[10]> gelb;
    
    		Nachricht():gelb(1)
    			{}
    
      };
    

    Weiß jemand wie ich dieses Problem lösen kann ?



  • Ja, ich weiß das Problem zu lösen, glaube ich ...

    deque<time_t> gelb[10];

    Fängst du nciht nen bisschen spät an? So bis morgen... naja, hast ja noch Zeit 🙂

    Falls du nciht das machst, was ich denke, dann entschuldige ich mich :), is nicht böse gemeint 🙂



  • Du definierst eine deque, die Felder beinhalten soll. Das geht nicht. Dazu känntest du boost::array verwenden (www.boost.org).

    Kann man auch arrays von containrn machen ?

    deque<time_t> gelb[10];
    

    Meinst du das ?? Was ist daran böse ?

    Normalerweise definiert man Klassen in Headern und definiert Sie in Modulen. Und in Headern sollte niemals ein

    using namespace std;
    

    stehen. Wenn du deine Klasse aber im Modul selbst (also in deiner .cpp oder .cc Datei) definierst, ist alles in Ordnung.


Anmelden zum Antworten