2013-04-05 143 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

相关问题