2011-07-06 5 views
1

私は次のコードを持っています。タイマーをカプセル化するクラスを作成したいのですが、クラスを宣言した後にタイマーを使用しているのです。私はタイマーの使い方の例を示す別のコードブロックを掲示しました。タイマーの外部にある

double diffclock(clock_t clock1,clock_t clock2) 
{ 
    double diffticks=clock1-clock2; 
    double diffms=(diffticks*1000)/CLOCKS_PER_SEC; 
    return diffms; 
} 
void some_function() 
{ 
    clock_t begin = clock(); 

    //do something 
    clock_t end=clock(); 
    cout << "Time elapsed: " << double(diffclock(end,begin)) << " ms"<< endl; 

} 

これは、ヘッダファイル、あなたのspecialclockクラスのコンストラクタで

#ifndef SPECIALCLOCK_H 
#define SPECIALCLOCK_H 
#include <ctime> 

class specialclock 
{ 
    private: 

    public: 

    specialclock(){} 
    ~specialclock(){} 
    double diffclock(clock_t clock1,clock_t clock2); 
}; 
double specialclock::diffclock(clock_t clock1,clock_t clock2) 
{ 
    double diffticks=clock1-clock2; 
    double diffms=(diffticks*1000)/CLOCKS_PER_SEC; 
    return diffms; 
} 
#endif 

そして、このメインファイル

#include "specialclock.h" 

int main() 
{ 

    specialclock timer; 

//how would I use the timer here? 

    return 0; 
} 
+0

* *あなたのクラスのプライベートメンバーを作成します。その後、残りの部分が収まるでしょう。 –

+0

質問ではっきりしませんが、timer.diffclock(...)で十分でしょうか? – Anon

+0

どのように使いたいのですか?あなたはそのクラスでスタートとストップの機能を持っていますか? specialclockオブジェクトを作成するときにタイマーを開始し、必要に応じて経過時間を確認できるようにしますか? – drewag

答えて

1

あなたのクラスを設定する方法は実際には意味がありません。私はこのように動作する単純なタイマークラスを持っています:

Timer MyTimer; 

// Do stuff... 

std::cout << "Execution took " << MyTimer.Seconds() << " seconds." << std::endl; 

これはあなたが探しているものですか?その場合、私のクラスは次のように設定されます:

class Timer 
{ 
    std::clock_t ReferencePoint; 

    public: 

    Timer() 
    { 
     // Set the reference point to the current time. 
    } 

    double Seconds() 
    { 
     // Return the difference between the current time and the 
     // reference point. 
    } 
}; 

これは、わかりやすくするために簡略化されています。私のフルソースherehereを見ることができます。

1
#include <iostream> 
#include "specialclock.h" 

int main() 
{ 

     specialclock timer; 
     clock_t begin = clock(); 
     //do something here 
    clock_t end = clock(); 
     std::cout << "Time elapsed: " << double(timer.diffclock(end,begin)) << " ms"<< std::endl; 

    return 0; 
} 
+0

あなたはそれを解決できるとうれしいです。タイマはオブジェクトでありポインタではないので、timer.diffclock(....)にする必要があります。 – Anon

2

で、へのクロックの現在の値を格納しますメンバー変数。

specialclockクラスのデストラクタで、時計の現在の値を再度クエリし、現在の値からメンバー変数の値を減算し、結果を出力します。

次に、任意の関数/メソッドの先頭にspecialclock項目を宣言すると、関数/メソッドの実行に要した時間が自動的に出力されます。

関連する問題