witam, pisze program w którym używam klasy. W main używam switch i w zależności od case tworze obiekt klasy. Jak stworzyć obiekt by poza switch dalej można było na nim pracować ?
switch, programowanie obiektowe
Wątek przeniesiony 2017-03-29 17:49 z C/C++ przez kq.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 1694
Musisz go zadeklarować poza switchem.
Wygląda to tak:
deklaracja;
switch z inicjalizacją {
...
}
używanie;
- Rejestracja: dni
- Ostatnio: dni
- Postów: 61
Polynomial p();
switch(res){
case READ_INT:{
Polynomial p(n);
for(int i=n;i>=0;i--){
double a = 0.0;
cout<<"Give a "<<i<<"-th coefficient: ";
cin>>a;
p.setCoefficient(i,a);
}
cout << "Polynomial: " << p << endl;
break;
}
case READ_STRING:
cout<<nazwaPliku;
break;
}
cout << "Polynomial: " << p << endl;
cout w switch i poza wypisuje inny obiekt ?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
Polynomial p();
Most Vexing Parse, p jest funkcją. Powinno być:
Polynomial p{};
Polynomial p(n);
Definiujesz nowy obiekt p w innym zakresie. Powinno być
p = Polynomial(n);
- Rejestracja: dni
- Ostatnio: dni
- Postów: 61
...
int main(){
unsigned int n;
double x;
readValue_t res;
string nazwaPliku;
res = getIntOrString("Give sth: ", n, nazwaPliku);
Polynomial p();
switch(res){
case READ_INT:{
p = Polynomial p(n);
for(int i=n;i>=0;i--){
double a = 0.0;
cout<<"Give a "<<i<<"-th coefficient: ";
cin>>a;
p.setCoefficient(i,a);
}
cout << "Polynomial: " << p << endl;
break;
}
case READ_STRING:
cout<<nazwaPliku;
break;
}
jakieś wskazówki ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2500
Przecież nadal masz Polynomial p();
Zmień to na Polynomial p{} albo (moja preferowana wersja) Polynomial p.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 61
wiem też mi sie wydawało ze tak trzeba ale wyskokuje error: no matching function for call to Polynomial:Polynomial() ...
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
Może postarajmy się zrozumieć ten komunikat błędu. Nie da się utworzyć obiektu typu Polynomial za pomocą konstruktora bezargumentowego. Co Ci to mówi?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 61
Rozumiem ze nie mogę utworzyć obiektu mojej klasy bez argumentu (n) , a skoro nie mogę go utworzyć to dalej nwm jak rozwiązać problem ze switch ...