2010-11-25 4 views
0

j'ai ce codeC++ erreur de classe

#include <iostream> 
using namespace std; 

class time{ 
      public: 

      time();  //constructor 

      void settime(int,int,int); 

      void print(); 

     private: 

       int hour,min,sec; 

       }; 

//constructor 

time::time(){ 

      hour=min=sec=0; 

      } 

int main(){ 

    int num; 

    time t1;//line1 

    time t2;//line2 

    cout<<"hello"<<endl; 

    cin>>num; 

    return 0;} 

et les erreurs dans ces lignes sont:

attendu '; » avant "t1"

déclaration [Avertissement] est une référence, pas appeler, fonction `temps »

pour chaque ligne

ce qui est le problème ???

Répondre

7

Il existe une fonction std::time importée dans l'espace de noms global par votre utilisation de using namespace std;. Ceci est en conflit avec votre classe nommée time. C'est encore une bonne raison de ne jamais utiliser using namespace std; au niveau de l'espace de noms. Notez toutefois que toutes les implémentations de bibliothèque standard ne respectent pas la règle selon laquelle les noms de la bibliothèque standard provenant de la bibliothèque standard C ne doivent pas être placés dans l'espace de noms global par défaut.

Une autre option est de qualifier le nom time avec class, ce qui permettra que cela fonctionne sur tout système:

class time t1; 
class time t2; 

Vous pouvez aussi vous envisager de renommer votre classe.

+0

... ou de placer votre propre classe de temps dans un espace de nom qui vous est propre pour le distinguer de tout ce qui se trouve à l'échelle mondiale. – dajames