0

我有一个定义和工作的类是 TempsSet。但现在我需要制作一个使用 TempsSet 的新的。这是我对新类的定义:

#ifndef SESSIO_H
#define SESSIO_H

    class sessio {
        public:
            // constructors
            sessio();
            //Pre: --; //Post:posa el temps per defecte a (0,0)
            sessio(string d, int h, int dur, string nom);
            // Pre: --; Post: el temps sera (DL h,m,s)
            void mostrarS() const;
            //Pre: --; Post: mostra per pantalla l'horari d'una activitat
            void llegirS();
            //Pre: --; Post: llegeix per teclat l'horari d'una activitat
        private:
            TempsSet a_sess;
            int a_dur;
            string a_nom;
    };

    #endif // SESSIO_H

这就是 TempsSet 的类定义。这个完美地工作:

#ifndef TEMPSSET_H
#define TEMPSSET_H
using namespace std;

class TempsSet {
 public:
    // constructors
    TempsSet();
    //Pre:-- //Post:posa el temps per defecte a (0,0)
    TempsSet(string d, int h, int m, int s);
    // Pre:--; Post: el temps sera (DL h,m,s)

    // mètodes consultors
    string diaLlarg() const;
    //Pre: Dia entrat correctament; Post: retorna el dia sense abreviar
    string diaAbr() const;
    //Pre: Dia entrat correctament; Post: retorna el dia abreviat
    int hora() const;
    // Pre: Hora entrada correctament; Post: retorna les hores del temps
    int minut() const;
    // Pre: Minuts entrat correctament; Post: retorna els minuts del temps
    int segon() const;
    // Pre: Segon entrat correctament; Post: retorna el segons del temps
    bool esIgual(TempsSet t) const;
    //Pre: Els dos temps entrats correctament; Post: retorna cert si els dos temps són iguals
    bool esMajor(TempsSet t) const;
    //Pre: Els dos temps entrats correctament; Post:retorna cert si el temps actual és major que el paràmetre
    void mostrar() const;
    //Pre: Els temps entrats correctament; Post: mostra el temps per pantalla en format d:h:m:s
    void mostrarLlargs() const;
    //Pre: Els temps entrats correctament; Post: mostra el temps per pantalla en format sense abreviar
    void mostrarDHM() const;
    //Pre: Els temps entrats correctament; Post: mostra el temps en format d:h:m

    // mètodes modificadors
    void llegir();
    //Pre: h≥0 i 0≤m<60 i 0≤s<60 sino s'ha de tornar a introduir el valor; Post: llegeix el temps des de teclat en format h:m:s.
    void llegirDHM();
    //Pre: h≥0 i 0≤m<60 sino s'ha de tornar a introduir el valor; Post: llegeix el temps des de teclat en format h:m.
    void incr(int s);
    //Pre: h≥0 i 0≤m<60 i 0≤s<60; Post: incrementa el temps en el nombre de segons indicat
    void incr (int d, int h, int m, int s);
    //Pre--; Post: incrementa el temps en el nombre d’hores, minuts i segons indicats
    void decr(int s);
    //Pre: h≥0 i 0≤m<60 i 0≤s<60; Post: decrementa el temps en el nombre de segons indicats
    void decr(int d, int h, int m, int s);
    //Pre: h≥0 i 0≤m<60 i 0≤s<60; Post: decrementa el temps en el nombre d’hores, minuts i segons indicats

 private:
    int a_s;
    int a_d;
};

#endif // TEMPS_H

但是当我尝试编译时,它说奇怪的错误,我在这一行的 'd' 后面缺少一个括号:

sessio(string d, int h, int dur, string nom);

TempsSet 没有命名类型,它指向 sessio 的私有属性。有任何想法吗?我该如何解决这个问题?

4

1 回答 1

4

sessio需要TempSet在其标题中完整的类定义。所以,#include "TempSet.h"

另外,避免using namespace std,特别是在标题中。

于 2013-03-10T11:41:17.277 回答