Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] Stworzenie klasy wirtualnej

Ostatnio zmodyfikowano 2014-06-07 23:17
Autor Wiadomość
Awantura
Temat założony przez niniejszego użytkownika
[c++] Stworzenie klasy wirtualnej
» 2014-06-07 16:56:35
Hejka, mam stworzyć klasę która będzie zawierała godzine i minute, konstruktor, ORAZ wirtualna metode która sprawdzi czy godziny i minuty są we właściwych zakresach.Z klasa i konstruktorami sobie poradziłem, ale nie mam bladego pojecia jak zrobic tą wirtualną metodę, pomoże ktoś?


C/C++
#include<iostream>


using namespace std;


class Termin
{
    unsigned int godzina;
    unsigned int minuta;
   
public:
    Termin( unsigned int g, unsigned int m ) {
        godzina = g;
        minuta = m;
       
    }
   
};
P-111638
Jacob99
» 2014-06-07 17:01:07
Wirtualną funkcję składową tworzy się przez dodanie słowa kluczowego
virtual
 przed typem zwracanym.
I popraw tytuł tematu.
P-111639
Awantura
Temat założony przez niniejszego użytkownika
» 2014-06-07 17:55:36
Napisałem coś takiego:

C/C++
virtual void Sprawdz {
   
   
}
Ale jakie mam tam dać warunki  ?
C/C++
virtual void Sprawdz {
    if( g > 23 )
   
}
Coś w tym stylu ?
P-111644
Jacob99
» 2014-06-07 18:30:21
Tak coś takiego.
Tylko czy ta funkcja nie powinna czegoś zwracać, skoro ma sprawdzić poprawność czasu?
np.
C/C++
virtual bool check()
{
    if( this->godzina > 23 )
         return false;
    else if( this->minuta > 60 )
         return false;
    else
         return true;
   
}

A w konstruktorze można użyć listy inicjalizacyjnej.

Wg. mnie wygląda to tak:
C/C++
#include<iostream>
using namespace std;

class Termin
{
    unsigned int godzina;
    unsigned int minuta;
   
public:
    Termin( unsigned int g, unsigned int m )
        : godzina( g )
         , minuta( m )
    { }
    virtual bool check()
    {
        if( this->godzina > 23 )
             return false;
        else if( this->minuta > 60 )
             return false;
        else
             return true;
       
    }
   
};
int main()
{
    Termin date( 23, 45 );
    Termin doba( 34, 67 );
    if( date.check() == false ) cout << "Bad date\n";
    else cout << "Good date\n";
   
    if( doba.check() == false ) cout << "Bad date\n";
    else cout << "Good date\n";
   
}

P-111647
pekfos
» 2014-06-07 19:51:11
C/C++
if( this->godzina > 23 )
     return false;
else if( this->minuta > 60 )
     return false;
else
     return true;

Co to za maniera na pisanie wszędzie this-> i else? Zwłaszcza bez żadnej potrzeby?
P-111662
Jacob99
» 2014-06-07 20:00:00
@Pekfos
A jak ty byś to zrobił bez else?
P-111664
pekfos
» 2014-06-07 20:02:19
Po prostu "bez else"
C/C++
if( godzina > 23 )
     return false;

if( minuta > 60 )
     return false;

return true;
P-111665
Monika90
» 2014-06-07 21:32:57
Najlepiej w ogóle bez if
C/C++
return godzina < 24 && minuta < 60;
P-111673
« 1 » 2 3
  Strona 1 z 3 Następna strona