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ć ?
Musisz go zadeklarować poza switchem.
Wygląda to tak:
deklaracja;
switch z inicjalizacją {
...
}
używanie;
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 ?
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);
...
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 ?
Przecież nadal masz Polynomial p();
Zmień to na Polynomial p{}
albo (moja preferowana wersja) Polynomial p
.
wiem też mi sie wydawało ze tak trzeba ale wyskokuje error: no matching function for call to Polynomial:Polynomial() ...
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?
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 ...
?