2013-05-06 4 views
2

Я знаю, что проблемы с термометром были доведены до смерти, но я думал, что дам это выстрел.C++ термометр с сообщениями об ошибках классов

Я продолжаю получать сообщения об ошибках «использование необъявленного идентификатора« converterc »и« использование необъявленного идентификатора «converterf». Есть идеи?

Spike

#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

converterc и converterf являются функцией членом класса Thermometer, но вы вызываете их без Thermometer пример.

Как насчет создания экземпляра Thermometer в вашем главном?

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

converterc и converterf являются функциями в своем классе. Это означает, что они должны быть вызваны на объект , являющийся экземпляром этого класса или класса, полученного из этого.

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); 
}; 
Смежные вопросы