C++ 如何从main.cpp文件中的单独cpp文件调用函数?

C++ 如何从main.cpp文件中的单独cpp文件调用函数?,c++,file,function,header,C++,File,Function,Header,我有以下Timer.cpp、Timer.h和main.cpp文件。我正在尝试从main.cpp文件中的Timer.cpp文件调用函数,并且在main文件中包含了Timer.h,但它仍然不起作用。有人能解释一下原因吗?我对C++有点生疏,觉得我犯了个愚蠢的错误。提前感谢您的帮助 #Timer.h file #ifndef __Notes__Timer__ #define __Notes__Timer__ #include <iostream> class Timer { publ

我有以下Timer.cpp、Timer.h和main.cpp文件。我正在尝试从main.cpp文件中的Timer.cpp文件调用函数,并且在main文件中包含了Timer.h,但它仍然不起作用。有人能解释一下原因吗?我对C++有点生疏,觉得我犯了个愚蠢的错误。提前感谢您的帮助

#Timer.h file

#ifndef __Notes__Timer__
#define __Notes__Timer__

#include <iostream>

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

#endif

#main.cpp文件
#包括“Timer.h”
#包括
使用名称空间std;
int main(){
退出;
start();
不能退出;
如果(退出!=“Y”|退出!=“Y”){
while(退出!=“Y”|退出!=“Y”){
不能退出;
}//当
}//如果
否则{
停止();

cout您可以在Timer.c中使用这些函数,并使用这个class::function

它不起作用的原因似乎是因为两件事:您的计时器函数定义与计时器类无关。例如,Timer.cpp中start的函数定义需要

     void Timer::start()
     {
       //Do stuff
     }
Timer.cpp文件中的所有其他函数都需要遵循相同的语法。此外,startTime和stopTime变量应在Timer.h文件中,如下所示:

class Timer
{
  private:
    clock_t startTime;
    clock_t stopTime;

  public:
    Timer();
    void start();
    //etc
}
接下来,在main函数中,您需要创建一个计时器对象:

 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
 }
intmain()
{
退出;
定时器*定时器_obj=新定时器();
定时器_obj->start();
//做事
定时器_obj->stop();
coutgetdelta();
删除定时器_obj;
//出口
}

你应该阅读:你需要一个定时器启动/停止/无论什么。用C++制作对象的错误方式。<代码>定时器TimeRoObj.<代码>。使用定时器* TimeReObj=新的定时器()与使用Timer\u obj一样有效。第一种方法只是在内存中创建一个指向对象的指针。第一种方法的优点是,您可以传递对象指针,而无需在每次要传递到函数中时复制整个对象。缺点是确保在完成时正确删除对象当然,如果您想在以后忘记
删除它时遇到问题,或者在类中尝试这样做,但没有意识到必须实现额外的成员才能使其正常工作。为什么要让它比必须的更难呢?当您关心性能时,传递指针的效率要高得多。没错,您必须e来处理内存管理问题,但在工业中的许多情况下,对性能的需求超过了一切。在这种情况下,通常可以传递引用。如果绝对需要指针,请使用智能指针。
class Timer
{
  private:
    clock_t startTime;
    clock_t stopTime;

  public:
    Timer();
    void start();
    //etc
}
 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
 }