switch, programowanie obiektowe

switch, programowanie obiektowe

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

SA
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:61
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ć ?

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:5 dni
  • Lokalizacja:Kraków
  • Postów:1694
1

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

Kopiuj
deklaracja;
switch z inicjalizacją {
...
}
używanie;
edytowany 1x, ostatnio: szweszwe
SA
zrobiłem tak jak niżej i dalej cos nie tak ;/
SA
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:61
0
Kopiuj
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 ?

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Wrzucaj kod w znaczniki kolorujące składnię.
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Szczecin
1
Kopiuj
Polynomial p();

Most Vexing Parse, p jest funkcją. Powinno być:

Kopiuj
Polynomial p{};
Kopiuj
Polynomial p(n);

Definiujesz nowy obiekt p w innym zakresie. Powinno być

Kopiuj
p = Polynomial(n);

SA
dalej nie działa ;/
SA
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:61
0
Kopiuj
...
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 ?

edytowany 3x, ostatnio: sabek
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
1

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

SA
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:61
0

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

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Szczecin
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?


SA
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:61
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 ...

SA
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:61
0

?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.