2013-05-06 86 views
2

我知道温度计问题已经完成了死亡,但我想我会给这个镜头。C++温度计与类错误消息

我不断收到错误消息“使用未声明的标识符'转换器'”和“使用未声明的标识符'converterf'”。有任何想法吗?

斯派克

#include <iostream> 
#include "converters.h" 
using namespace std; 

int main() 
{ 
    int degree; 
    int weehoo; 

    cout<<"\n\n\n\t\t Enter the temperature : "; 
    cin>>degree; 
    cout<<"\n\n\t\t If the temperature is in Celsius enter 0, if Farenheit enter 1 :"; 
    cin>>weehoo; 

    if (weehoo==0) 
    { 
     cout<<"\n\n\t\tThe temperature in Farenheit is "<<converterc(degree,weehoo)<<endl; 
    } 
    else 
    { 
     cout<<"\n\n\t\tThe temperature in Celsius is "<<converterf(degree,weehoo)<<endl; 
    } 
    return 0; 
} 
#ifndef __again_converters_h 
#define __again_converters_h 
#endif 
#pragma once 

class Thermometer 
{ 
private: 
float degreeC; //celcius 
float degreeF; //farenheit 

public: 
void setCelcius (float c) {degreeC=c;} 
void setFarenheit (float f) {degreeF=f;} 
float getCelcius (void){return degreeC;} 
float getFarenheit (void){return degreeF;} 
Thermometer (float degree=0,float f=0, float c=0,float outtemp=0); 
float converterc(int degree,int weehoo); 
float converterf(int degree,int weehoo); 
}; 

converters.cpp文件 的#include “converters.h”

float Thermometer::converterf(int degree,int weehoo) 
{ 
degreeC=((degree-32) * (.5556)); 
return degreeC ; 

} 
float Thermometer::converterc(int degree,int weehoo) 
{ 
degreeF=((1.8)*degree)+32; 
return degreeF; 
} 

回答

0

convertercconverterf是类Thermometer的成员函数,但你称他们没有Thermometer实例。

如何在你的main中创建一个Thermometer实例?

Thermometer tm; 
tm.converterc(degree, weehoo); 
0

convertercconverterf是在你的类功能。这意味着他们在对象上被调用,该对象是这个类的实例或从此派生的类。使用这些功能的方式

class Thermometer 
{ 
private: 
float degreeC; //celcius 
float degreeF; //farenheit 
//... 
public: 
float converterc(int degree,int weehoo); 
float converterf(int degree,int weehoo); 
}; 

    int degree = 1; 
    int weehoo = 2; 
    Thermometer t; //initialize it properly if this is needed before calling functions 
    float f = t.converterc(degree,weehooo); 

你这样做:

float f = converterc(degree,weehooo); 

是可能的:

float f = Thermometer::converterc(degree,weehooo); 

但他们必须静态拿什么他们不这样做有this指针,并且对整个类都很常见(仍然可以使用类的实例调用它们,但它不是必需的):

class Thermometer 
{ 
private: 
float degreeC; //celcius 
float degreeF; //farenheit 
//... 
public: 
static float converterc(int degree,int weehoo); 
static float converterf(int degree,int weehoo); 
};