2012-04-21 88 views
0

我一直在做一个程序,将就音频,SPL等方面做几个方程。未定义的引用另一个类文件中的方法,如何解决?

我决定让主要的类文件给用户提供一个选项来选择他想要的方程要做,而这些方程式则放在另一个类文件中。

Atm,主要的类文件被设置为测试maxPeakSPL(),但我无法让它运行。

的main.cpp

//Kh[a]os 
#include "equations.h" 
#include <iostream> 

void mainLoop(); 

int maxSPL = 0; 

int main() 
{ 
std::cout << "Created by Kh[a]os" << std::endl << std::endl; 
mainLoop(); 

return 0; 
} 

void mainLoop() 
{ 

std::cout << "hi"; 
maxSPL = equations::maxPeakSPL(); 
std::cout << std::endl << maxSPL << "db" << std::endl << std::endl; 


    } 

equations.h

#ifndef EQUATIONS_H 
#define EQUATIONS_H 

#include <string> 


class equations 
{ 
    public: 
     equations(); 
     static int maxPeakSPL(); 
    protected: 
    private: 
}; 

#endif // EQUATIONS_H 

equations.cpp

#include "equations.h" 
#include <iostream> 
#include <string> 

equations::equations() 
{ 

} 

static int maxPeakSPL() 
{ 

    int Sens = 0; 
    double Distance = 0; 
    int Watts = 0; 
    int sWatts = 2; 
    int eWatts = 0; 
    double maxSPL = 0; 
    double counter = 0; 
    double wall = 0; 
    std::string corner = ""; 

bool v = true; 

    std::cout << "Sensitivity (db): " << std::endl; 
    std::cin >> Sens; 
    std::cout << "Amplification (watts): " << std::endl; 
    std::cin >> Watts; 
    std::cout << "Listening Distance (meters): " << std::endl; 
    std::cin >> Distance; 
    std::cout << "Distance from Wall (ft): " << std::endl; 
    std::cin >> wall; 
    std::cout << "Are you they in a corner? (y/n): " << std::endl; 
    std::cin >> corner; 


    maxSPL = Sens - (Distance*3 - 3); 


while(v == true) 
{ 
if (sWatts > Watts) 
     { 
      v = false; 
      eWatts = sWatts; 
      sWatts = sWatts/2; 
      Watts = Watts-sWatts; 
      counter = (double)Watts/(double)eWatts; 
      counter = counter*3; 
      maxSPL = maxSPL + counter; 

     } 

    if (v == true) 
    { 
     maxSPL = maxSPL + 3; 
     sWatts = sWatts*2; 
    } 

    } 
    if (wall <= 4) 
    maxSPL = maxSPL + 3; 

    if (corner == "Y" || corner == "YES" || corner == "y" || corner == "yes") 
    maxSPL = maxSPL + 3; 

    return maxSPL; 

} 

我得到的错误,当我运行它是:未定义的引用`方程: :maxPeakSPL()'

I没有线索如何解决这个问题,任何援助将是伟大的。谢谢。

回答

0

在你的main中,试着把这个函数放在main块之前。在指令/标志的名称前加上下划线。

+0

我很抱歉,但因为我有点新手,我不太了解我应该改变什么。你是说: void mainLoop(); int equations :: maxPeakSPL(); – 2012-04-21 23:08:49

+0

不,我的意思是你有void mainloop()的主体,你需要把它放在你的int main()之前,因为C++是自顶向下的。 – Nightvein 2012-04-21 23:11:35

+0

不是void mainLoop()的目的;被宣布在顶部? mainLoop运行正常,一切运行,只是一行从其他类错误调用函数。 – 2012-04-21 23:13:48

相关问题