2010-11-25 4 views
0

私はこのコードC++クラスエラー

#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;} 

及びこれらの行の誤差を有している: `予想

;」 「T1」の前に

[警告]文が参照され、各ラインのための「`時間を機能するように、

を呼び出すことはありませ

いただきました!問題?

答えて

7

using namespace std;を使用してグローバル名前空間にインポートされるstd::time関数があります。これはあなたのクラスtimeと競合します。これは、ネームスペーススコープでusing namespace std;を使用しないで済ませるもう一つの理由です。

しかし、すべての標準ライブラリの実装が、C標準ライブラリからの標準ライブラリ内の名前をデフォルトでグローバル名前空間に配置しないようにするというルールに賛同しているわけではないことに注意してください。

別のオプションは、これは任意のシステム上で動作するようになりますどの、classで名前timeを修飾することです:

class time t1; 
class time t2; 

あなたはまた、自分のクラスの名前を変更することを検討してください。

+0

...自分のタイムクラスを自分の名前空間に入れて、グローバルスコープのものとは区別します。 – dajames

関連する問題