- Czemu cin.ignore nie jest potrzebne skoro używamy cin?
- czemu nie powinienem pytać użytkownika o liczbę w konstruktorze?
- Konstruktor nie jest funkcją/metodą?
gdy napisze tak:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
class klasa{
public:
double a;
klasa(double _a){ //1 funkcja & konstruktor
do{
cout << "Podaj bok prostokata: ";
cin >> _a;
if(a<0)
cout << "podaj liczbe dodatnia!" << endl;
}
while(a<=0);
a=_a;
}
};
int main() {
klasa bok(bok.a);
cout << bok.a;
cin.ignore();
getchar();
return 0;
}
wtedy mi program dziala. Wiem że może wyszedłem na głupka ale muszę szybko to skończyć a jak na razie uczyłem się strukturalnie i obiektowy jest dla mnie nowy.
klasy z reguły mają być tylko strukturami danych, używanych do różnych rzeczy. Wkładając tam pytanie o liczbę rujnujesz te opcje. W klasie najlepiej tylko zarządzać jej polami/funkcjami, a poza nią pytać o dane i odpowiednie je do klasy wysyłać. Tak w ogóle to myślę że klasa w tym wypadku jest zbędna, mi to wygląda na perfekcyjnego kandydata na funkcję.
cin.ignore() robi coś innego niż myślisz. Jeśli masz wątpliwości użyj google, tam znajdziesz stroche cplusplus.com, a na niej wytłumaczone wszystkieg funkcje standardowych bibliotek(chyba).
Kod działa Ci dlatego że wcześniej kompilator nie wiedział o które a ci chodzi, czy o pole z klasy, czy o argument konstruktora.