Konwersja temperatur w c++

czacha

Konwersja temperatur w c++

Post autor: czacha »

Napisalem konwerter w c++, ktory operuje na temperaturach w skali Kelwina, Celsjusza i Fahrenheita. Podczas kompilacji wyskakuje blad:

cannot call member function `double Convert::CtoF(double)' without object

tu zamieszczam kod:

plik main

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>
#include "class.h"

using namespace std;

//z Celsjusza
    double Convert::CtoF(double c)
    {
        itsC = c;
        return itsF = itsC * 9 / 5 + 32;
    }

    double Convert::CtoK(double c)
    {
        itsC = c;
        return itsK = itsC - 273;
    }
    
//z Fahrenheita
    double Convert::FtoC(double f)
    {
        itsF = f;
        return itsC = (itsF - 32) * 5 / 9;
    }
    
    double Convert::FtoK(double f)
    {
        itsF = f;
        return itsK = (itsF - 32) * 5 / 9 - 273;
    }
    
//z Kelwina
    double Convert::KtoF(double k)
    {
        itsK = k;
        return itsF = itsK * 9 / 5 + 32 + 273;
    }
    
    double Convert::KtoC(double k)
    {
        itsK = k;   
        return itsC = itsK + 273;
    }

int main(int argc, char *argv[])
{
    double wartosc;
    char jedn1, jedn2;
    
    cout << "Podaj wartosc temperatury.\n";
    cin >> wartosc;
    
    cout << "Podaj jednostke temperatury(C,F,K).\n";
    cin >> jedn1;
    
    cout << "Podaj jednostke, ktora chcesz uzyskac(C,F,K).\n";
    cin >> jedn2;
    
    
    Convert::CtoF(wartosc);
    cout << "Wynik: " << GetF() << endl;
    
    /*if      (jedn1 == 'C' && jedn2 == 'F')
         cout << "Przetworzono: " << Convert::CtoF(wartosc) << jedn2 << endl;
    
    else if (jedn1 == 'C' && jedn2 == 'K')
         cout << "Przetworzono: " << Convert::CtoK(wartosc) << jedn2 << endl;
    
    else if (jedn1 == 'F' && jedn2 == 'C')
         cout << "Przetworzono: " << Convert::FtoC(wartosc) << jedn2 << endl;
    
    else if (jedn1 == 'F' && jedn2 == 'K')
         cout << "Przetworzono: " << Convert::FtoK(wartosc) << jedn2 << endl;
    
    else if (jedn1 == 'K' && jedn2 == 'F')
         cout << "Przetworzono: " << Convert::KtoF(wartosc) << jedn2 << endl;
    
    else if (jedn1 == 'K' && jedn2 == 'C')
         cout << "Przetworzono: " << Convert::KtoC(wartosc) << jedn2 << endl;
      */   
    system("PAUSE");
    return EXIT_SUCCESS;
}
plik class.h

Kod: Zaznacz cały


class Convert
{
 public:
           //konstruktory
     //Convert();
     //Convert(){}
     
           //akcesory
     double GetC()const { return itsC; }
     double GetF()const { return itsF; }
     double GetK()const { return itsK; }
     
     void SetC(double c) { itsC = c; }
     void SetF(double f) { itsF = f; }
     void SetK(double k) { itsK = k; }
     
           //konwersja
     double CtoF(double);
     double CtoK(double);
     
     double FtoC(double);
     double FtoK(double);
     
     double KtoF(double);
     double KtoC(double);
     
 private:
     double itsC;
     double itsF;
     double itsK;
};
Myslalem moze, ze zle uzyskuje dostep, ale probowalem robiac wszystko publiczne i tez nie idzie. Bardzo prosze o pomoc. Przepraszam jesli kod bedzie dla kogos nieprzejrzysty. Staralem sie go w miare dobrze zapisac. Gdyby byly jakies pomysly na zoptymalizowanie, to tez poprosze. Pozdrawiam.
luka52
Użytkownik
Użytkownik
Posty: 8601
Rejestracja: 1 maja 2006, o 20:54
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 47 razy
Pomógł: 1816 razy

Konwersja temperatur w c++

Post autor: luka52 »

Napisałeś klasę, a nie stworzyłeś obiektu w funkcji main() ??: ??:
czacha

Konwersja temperatur w c++

Post autor: czacha »

Rzeczywiscie. Jaki ja jestem glupi. Tak bezmyslny blad... przepraszam bardzo. Temat mozna zamknac. Pozdrawiam.
rObO87
Użytkownik
Użytkownik
Posty: 588
Rejestracja: 16 sty 2005, o 20:42
Płeć: Mężczyzna
Podziękował: 38 razy
Pomógł: 4 razy

Konwersja temperatur w c++

Post autor: rObO87 »

Czy do takiego programu opłacilo Ci się bawić w klasy/obiekty? Nie wygodniej by było zrobić to na funkcjach?
czacha

Konwersja temperatur w c++

Post autor: czacha »

Byc moze i tak, ale w tym programie nie chodzi o to, zeby zrobic cos jak najprosciej, ale zeby bylo to ze tak powiem cwiczenie przerabianego dzialu. Tez wydaje mi sie, ze lepiej byloby na funkcjach. Prawdopodobnie zrobie to jeszcze ze wskaznikami, lub referencjami, choc to pewnie bez sensu, no ale trzeba cwiczyc. Pozdrawiam
ODPOWIEDZ