1

C++ でデジタル時計を作成すると、次のエラーが発生します。reloj ステートメントの前は関数への参照であり、呼び出しではない 'time' ステートメントは効果がない ''reloj'' は宣言されていない (最初にこの関数を使用する) 宣言されていない識別子は、それが現れる関数ごとに 1 回だけ報告される

#include<iostream>
#include<Windows.h>

using namespace std;
struct time
{
int hr,mint,seg;
};

int main()
{
time reloj;

reloj.hr = 0;
reloj.mint = 0;
reloj.seg = 0;
for(int i = 0; i<24; i++)
{
    if(reloj.hr == 23)
    {
        reloj.hr = 0;
    }
    for(int j = 0; j<60; j++)
    {
        if(reloj.mint == 59)
        {
            reloj.mint = 0;
        }
        for(int k = 0; k<60; k++)
        {
            if(reloj.seg == 59)
            {
                reloj.seg = 0;
            }
            cout<<reloj.hr<<" : "<<reloj.mint<<" : "<<reloj.seg<<endl;
            reloj.seg++;
            Sleep(1000);
            system("Cls");
        }
        reloj.mint++;
    }
    reloj.hr++;
}
}
4

2 に答える 2

1

using namespace std;グローバル名前空間に置くのは悪い考えであり、おそらくstd::time他の名前のホストと一緒にそこにダンプしています。timeこれはあなたのクラスと衝突します。

残念ながら、単純に悪を取り除くことはusingここでは解決策ではありませんtime。これは C ライブラリに由来するものだからです。実装では、C ライブラリから名前をグローバル名前空間にダンプすることが許可されています (多くの場合、そうしています)。

したがって、オプションは次のとおりです。

  • クラスの名前を変更するか、独自の名前空間に配置します。
  • struct timeただではなく、と呼んでくださいtime
  • グローバル名を台無しにする場合に備えて、標準ライブラリ ヘッダーを含めないでください。
于 2013-11-07T08:13:25.430 に答える
0

私は別のコードを持っています:

#include <iostream>
#include <unistd.h>
#include <ctime>

using namespace std;

void Timer()
{
    int HOUR = 0, MINUTE = 0 , SECOND = 0;

    time_t now = time(0);
    tm *ltm = localtime(&now);

    HOUR = ltm->tm_hour;
    MINUTE = ltm->tm_min;
    SECOND = ltm->tm_sec;

    while(true)
    {
        system("clear");
        cout << HOUR << ":" << MINUTE << ":" << SECOND << endl;
        SECOND ++;

        if(SECOND == 60)
        {
            MINUTE++;
            SECOND = 0;

            if(MINUTE == 60);
            {
                HOUR++;
                MINUTE = 0;

                if(HOUR ==24)
                {
                    HOUR = 0;
                }
            }
        }

        sleep(1);
    }
}

int main()
{
    Timer();
}

*これを Windows で使用する場合は、system("clear") を system("cls") に変更します。

于 2021-05-02T15:52:26.150 に答える