עבר עריכה לאחרונה בתאריך 24.06.09 בשעה 17:28:25 על-ידי Nesher (מנהל הפורום)
התוכנית הזו להשתמש בהורשה כדי ליצור מערך צלעות של מלבן ושל משולש
הבעיה היא שהמשתנה N מאבד את המידע שבו ונראה כאילו שהוא לא מאותחל, ולכן התוכנית משתבשת.במה טעיתי?
#include <iostream> using namespace std;class shapes { protected: int N; long *SIDES; public: shapes(int x) { if (x==2) SIDES=new long[4]; else SIDES=new long[x]; N=x; cout<<"Please enter data for "<<N<<" sides"<<endl; for (int i=0;i<N;i++) cin>>SIDES[i]; if (x==2) { SIDES[2]=SIDES[0]; SIDES[3]=SIDES[1]; N=4; } } shapes() { } long heikef() { long tmp=0; for (int i=0;i<N;i++) tmp+=SIDES[i]; return tmp; } }; class rectangle: public shapes { public:
rectangle() { shapes(2); } }; class triangle: public shapes { public: triangle() { shapes(3); } }; void main() { triangle tri; rectangle rec; cout << tri.heikef(); cout << rec.heikef(); }
|