[c++] Stworzenie klasy wirtualnej
Ostatnio zmodyfikowano 2014-06-07 23:17
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ś? #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; } };
|
|
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. |
|
Awantura Temat założony przez niniejszego użytkownika |
» 2014-06-07 17:55:36 Napisałem coś takiego: Ale jakie mam tam dać warunki ? virtual void Sprawdz { if( g > 23 ) }
Coś w tym stylu ? |
|
Jacob99 |
» 2014-06-07 18:30:21 Tak coś takiego. Tylko czy ta funkcja nie powinna czegoś zwracać, skoro ma sprawdzić poprawność czasu? np. 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: #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"; }
|
|
pekfos |
» 2014-06-07 19:51:11 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? |
|
Jacob99 |
» 2014-06-07 20:00:00 @Pekfos A jak ty byś to zrobił bez else? |
|
pekfos |
» 2014-06-07 20:02:19 Po prostu "bez else" if( godzina > 23 ) return false;
if( minuta > 60 ) return false;
return true;
|
|
Monika90 |
» 2014-06-07 21:32:57 Najlepiej w ogóle bez if return godzina < 24 && minuta < 60;
|
|
« 1 » 2 3 |