Napisałem taki kod:
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
class Figura {
int menu;
public:
Figura();
// Obiekt Kolo
class Kolo {
double r;
public:
Kolo(double promien): r(promien) {} // Konstruktor
double pole() { return M_PI*r*r; }
double obwod() { return 2*M_PI*r; }
};
// Obiekt Trojkat
class Trojkat {
double a,b,c,h;
public:
Trojkat(double a, double b, double c, double h): a(a), b(b), c(c), h(h) {} // Konstruktor
double pole() { return ((a*h)/2); }
double obwod() { return a+b+c; }
};
// Obiekt Kwadrat
class Kwadrat {
double a;
public:
Kwadrat(double a): a(a) {} // Konstruktor
double pole() { return a*a; }
double obwod() { return 4*a; }
};
~Figura();
};
int Menu() {
int menu;
cout << "MENU:" << endl;
cout << "1-Kolo" << endl;
cout << "2-Trojkat" << endl;
cout << "3-Kwadrat" << endl;
cout << "Wybierz figure: " << endl;
cin >> menu;
system("cls");
return menu;
}
string nazwaFigury(int typFigury) {
string nazwa;
switch (typFigury) {
case 1: nazwa = "Kolo"; break;
case 2: nazwa = "Trojkat"; break;
case 3: nazwa = "Kwadrat"; break;
}
return nazwa;
}
int main() {
int typFigury = Menu();
switch (typFigury) {
case 1: {
double r;
cout << "Podaj promien: ";
cin >> r;
Figura::Kolo figurka(r);
} break;
case 2: {
double a,b,c,h;
cout << "Podaj kolejno: podstawe, ramie1, ramie2, wysokosc: ";
cin >> a >> b >> c >> h;
Figura::Trojkat figurka(a,b,c,h);
} break;
case 3: {
double a;
cout << "Podaj dlugosc boku: ";
cin >> a;
Figura::Kwadrat figurka(a);
} break;
default: cout << "Podano zly typ figury."; break;
}
cout << "Wybrano " << nazwaFigury(typFigury) << endl;
cout << "Pole: " << figurka.pole() << endl;
cout << "Obwod: " << figurka.obwod() << endl;
return 0;
}
jednak 5 linijka od końca, tj:
cout << "Pole: " << figurka.pole() << endl;
wywołuje mi błąd:
figurka.pole() was not declared in this scope.
nie wiem już jak to obejść, ale koniecznie chcę, abym mógł deklarować ten obiekt poprzez switch i wywoływać później figurka.pole() chociaż mniej więcej tak jak to próbuje tu zrobić. Ma ktoś jakiś pomysł?