
C++ problem sa varijablama u podklasi


Zahrđao sam s C++-om, no ne sjećam se da je kôd dopušten u deklaracijama klasa. Barem ne na taj način. Ako hoćeš postaviti defaultne vrijednosti prije deklariranih varijabli (članova), onda to radiš u konstruktoru, ne?
Moram primijetiti i da cin i cout dosad još nisam vidio da netko upotrebljava u konstruktoru. Konstruktor ne služi tome! Ti u deklaracije ubacuješ kôd koji bi trebao biti u konstruktoru, a u konstruktor ubacuješ kod koji bi trebao biti u nekoj metodi.

Uh, uh, ima tu dosta stvari koje nemaju smisla. Dakle, x, y, Dx, Dy su ti članske varijable, i ne možeš ih tako inicijalizirati već moraš u konstruktoru od klase konacno. Dakle, kad se kreira klasa konacno, ona je podklasa od mnozenje, i prvo će se pozvati njegov konstruktor, on po tome popuni varijable a,b,c,d,e,f preko standardnog ulaza. E onda ide konstruktor u konacnu, i te inicjializacije dodaj u konacno.
Ako hoćeš metode nadjačati u podklasi, onda ti i u njoj moraju biti virtualne (konkretno ovaj ispis,. double metode moraju nešto vraćati, inače zna biti problema na stacku, a tvoja ispis() ne vraća ništa (najbolje da bude void). Onda ispisivanje matrica, to će ti samo ispisati adresu u memoriji gdje to dvodimenzionalno polje počinje.
Iskreno, ne znam što pokušavaš s ovim.

Možda, za početak...
class konacno : public mnozenje {
public:
double x, y;
void rezultat() {
metoda = "determinante";
}
double ispis() {
calc();
cout << "X je " << x << endl;
cout << "Y je " << y << endl;
}
void calc()
{
Dx = c * e - b * f;
Dy = a * f - c * d;
D = a * e - d * b;
x = Dx / D;
y = Dy / D;
}
};
Pozdrav. Radim jedan kod za racunanje determinanti u C++, sa klasama, podklasama, itd. Znam da je daleko od savrsenog, ali sam napravio duzu pauzu od programiranja i sad me muci jedan problem. Kod je ispod, a ispod koda malo objasnjenje.
#include <iostream>
using namespace std;
class mnozenje {
protected: int a, b, c, d, e, f;
string metoda;
public:
double Dx, Dy, D=0;
virtual double ispis() {
return 0;
}
virtual double ispis2() {
return 0;
}
void rezultat() {
cout << "REZULTAT" << endl;
cout << "METODA: " << " " << metoda << endl;
cout << ispis2() << endl;
}
mnozenje();
~mnozenje();
};
mnozenje::mnozenje() {
cout << "UNOS JEDNACINA" << endl;
cout << "PRVA JEDNACINA" << endl;
cout << endl;
cout << endl;
cout << "Jednačina je tipa: ax+by=c" << endl;
cout << "UNESI a" << endl;
cin >> a;
cout<<endl;
cout << "UNESI b" << endl;
cin >> b;
cout<<endl;
cout << "UNESI c" << endl;
cin >> c;
cout << endl;
cout << endl;
cout << "DRUGA JEDNACINA" << endl;
cout << endl;
cout << endl;
cout << "Jednačina je tipa: dx+ey=f" << endl;
cout << "UNESI d" << endl;
cin >> d;
cout<<endl;
cout << "UNESI e" << endl;
cin >> e;
cout<<endl;
cout << "UNESI f" << endl;
cin >> f;
cout<<endl;
cout << endl;
cout << endl;
}
mnozenje::~mnozenje() {
cout << "Kraj" << endl;
}
class determinante: public mnozenje {
double ispis() {
int matdx[2][2]={{c,b},{f,e}};
int matdy[2][2]={{a,c},{d,f}};
int matd[2][2]={{a,b},{d,e}};
cout << "MATRICA DX" << matdx << endl;
cout << "MATRICA DY" << matdy << endl;
cout << "MATRICA D" << matd << endl;
}
};
class konacno: public mnozenje {
public:
double x,y;
Dx = c * e - b * f;
Dy = a * f - c * d;
D = a * e - d * b;
x = Dx / D;
y = Dy / D;
void rezultat() {
metoda = "determinante";
}
double ispis() {
cout << "X je " << x << endl;
cout << "Y je " << y << endl;
}
};
int main() {
mnozenje* mno = new determinante;
mno -> ispis();
delete mno;
mnozenje* mno2 = new konacno;
mno2 -> rezultat();
delete mno2;
return 0;
}
U podklasi "konacno" mi izbacuje syntax error za Dx, Dy, D, x i y. Meni na prvu nista pogresno ne izgleda, pokusao sam ici postupkom da ih pretvorim u double metode, ali sam se malo zapetljao zbog racunskih operacija koje se moraju izvrsiti pomocu ovih varijabli, pa pretpostavljam da tim putem ne mogu ni ici.