2011-01-28 7 views
2

내 코드의 실행 시간을 아래에서 확인하려면 Timer 클래스를 작성했습니다.C++ : 코드 실행 시간 찾기 문제

Timer::StartTimer(); 
DoOperation(); 
cout<<"Time elapsed: "<<Timer::GetTime(); 

startTime 및 endTime이 정의되지 않은 오류가 발생합니다. 나는 그 문제를 확실히 알 수 없었다. 도와 주실 수 있니?

파일 : Timer.h

#include <sys/time.h> 

class Timer 
{ 
    static timeval startTime, endTime; 

public: 
    static void StartTimer(); 
    static long int GetTime(); 
}; 

파일 : timer.cc에서 Timer.cc

#include "Timer.h" 

void Timer::StartTimer() 
{ 
    gettimeofday(&startTime, NULL); 
} 

long int Timer::GetTime() 
{ 
    long int seconds, useconds, mtime; 
    gettimeofday(&endTime, NULL); 
    seconds = endTime.tv_sec - startTime.tv_sec; 
    useconds = endTime.tv_usec - startTime.tv_usec; 
    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5; 
    return(mtime); 
} 
+1

당신이 당신의 프로그램에 Timer.h을 포함합니까? Timer 구현에 연결 하시겠습니까? – wich

+0

예, 포함하고 연결합니다. – Nemo

+0

'static '의 사용에 문제가 있습니까? – Nemo

답변

9

이 필요합니다

timeval Timer::startTime; 
timeval Timer::endTime; 

FAQ

으로보기 다른 사람이 포 이 코드는 인데 모두 정적 인 경우 "비정상적인"디자인이므로 한 번에 여러 곳에서이 코드를 사용하려고하면 문제가 발생할 수 있습니다. 아마 당신은 그것을 정적으로 만들지 않고 그것을 사용할 때 인스턴스를 갖고 싶을 것입니다.

+0

고맙습니다. 그것을 고쳤다. – Nemo

1

나는 모든 것을 당신은 타이머 : endTime- 사용자 및 타이머 : startTime을

4

당신은 정적 멤버 변수를 초기화해야 할 정의 할 필요가

정적 인 경우 네임 스페이스를 사용하는 대신 클래스의 더 나은 것 같아요.

가이 추가하여 Timer.cc :

timeval Timer::startTime; 
timeval Timer::endTime;