簡體   English   中英

如何從main.cpp文件中的單獨cpp文件中調用函數?

[英]How to call a function from a separate cpp file in the main.cpp file?

我有以下Timer.cpp,Timer.h和main.cpp文件。 我正在嘗試從main.cpp文件中的Timer.cpp文件調用函數,並且已將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

#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

您可以在Timer.c中使用這些功能,並使用此類class :: function

似乎它不起作用的原因是由於兩件事:您的Timer函數定義未綁定到Timer類。 例如,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
}

接下來,在主函數中,您需要創建一個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
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM