Wątek przeniesiony 2017-03-29 17:49 z C/C++ przez kq.

switch, programowanie obiektowe

0

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ć ?

1

Musisz go zadeklarować poza switchem.
Wygląda to tak:

deklaracja;
switch z inicjalizacją {
...
}
używanie;
0
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 ?

1
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);
0
...
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 ?

1

Przecież nadal masz Polynomial p();
Zmień to na Polynomial p{} albo (moja preferowana wersja) Polynomial p.

0

wiem też mi sie wydawało ze tak trzeba ale wyskokuje error: no matching function for call to Polynomial:Polynomial() ...

1

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?

0

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 ...

0

?

1 użytkowników online, w tym zalogowanych: 0, gości: 1