2

温度計の問題が解決されたことは知っていますが、これを試してみようと思いました.

「宣言されていない識別子「converterc」の使用」および「宣言されていない識別子「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;
}
4

2 に答える 2

0

convertercconverterfクラスのメンバー関数ですが、インスタンスThermometerなしでそれらを呼び出しています。Thermometer

Thermometerメインにインスタンスを作成するのはどうですか?

Thermometer tm;
tm.converterc(degree, weehoo);
于 2013-05-06T02:04:02.910 に答える
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);
};
于 2013-05-06T02:11:32.803 に答える