2013-04-05 141 views
1

我有以下Timer.cpp,Timer.h和main.cpp文件。我試圖從我的main.cpp文件中的Timer.cpp文件中調用函數,並且在主函數中包含了Timer.h,但它仍然不起作用。有人可以解釋爲什麼嗎?我用C++有點生疏,覺得我犯了一個愚蠢的錯誤。預先感謝您的幫助。如何從main.cpp文件中的單獨cpp文件調用函數?

#Timer.h file 

#ifndef __Notes__Timer__ 
#define __Notes__Timer__ 

#include <iostream> 

class Timer { 
public: 
    Timer(); 
    void start(); 
    void stop(); 
    void clear(); 
    float getDelta(); 
}; 

#endif 

#Timer.cpp file  
#include "Timer.h" 


clock_t startTime; 
clock_t stopTime; 

Timer::Timer(){ 
    startTime = 0; 
    stopTime = 0; 
}//Timer 

void start(){ 
    startTime = clock(); 
}//start 

void stop(){ 
    stopTime = clock(); 
}//stop 

float getDelta(){ 
    return stopTime-startTime; 
}//getDelta 

#main.cpp file 

#include "Timer.h" 
#include <iostream> 

using namespace std; 


int main(){ 
    char quit; 
    start(); 
    cout << "Would you like to quit? Y or N: "; 
    cin >> quit; 
    if (quit != 'Y' || quit != 'y'){ 
     while (quit != 'Y' || quit != 'y'){ 
      cout << "Would you like to quit? Y or N: "; 
      cin >> quit; 
     }//while 
    }//if 
    else { 
     stop(); 
     cout << getDelta(); 
     exit(0); 
    }//else 
}//main 
+0

你應該閱讀本:http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier – chris 2013-04-05 03:28:03

+0

你需要一個計時器來啓動/停止/無論。 – chris 2013-04-05 03:29:29

回答

0

您可以在timer.c中使用這些功能,並使用這個類::功能

0

現在看來,這是不工作的原因是因爲有兩件事:你的定時器函數定義不綁定到Timer類。例如,對於在Timer.cpp啓動函數定義必須

 void Timer::start() 
    { 
     //Do stuff 
    } 

所有在Timer.cpp文件中的其他功能需要遵循相同的語法。此外,開始時間和停止時間變量應該走在Timer.h文件是這樣的:

class Timer 
{ 
    private: 
    clock_t startTime; 
    clock_t stopTime; 

    public: 
    Timer(); 
    void start(); 
    //etc 
} 

接下來,在主函數中,你需要創建一個Timer對象:

int main() 
{ 
    char quit; 
    Timer* timer_obj = new Timer(); 
    timer_obj -> start(); 
    //Do stuff 
    timer_obj -> stop(); 
    cout << timer_obj -> getDelta() ; 
    delete timer_obj ; 
    //exit 
} 
+0

以C++編寫對象的錯誤方法。 'Timer timer_obj;'。 – chris 2013-04-05 03:39:50

+0

使用Timer * timer_obj = new Timer()與使用Timer timer_obj一樣有效。第一個只是創建一個指向內存中的對象的指針。第一個優點是,您可以傳遞對象指針,而無需在每次要傳入函數時複製整個對象。缺點是確保在完成對象時正確刪除對象。 – 2013-04-05 04:12:31

+0

當然,如果你以後想忘記「刪除」它,或者當你在課堂上嘗試這樣做,而沒有意識到必須實施其他成員才能使其正常工作時纔會遇到問題。爲什麼要讓它變得比它更難呢? – chris 2013-04-05 04:14:17

相關問題