שאלה מטרידה בC++

zontar

New member
שאלה מטרידה בC++ ../images/Emo26.gif

בטח התשובה כלכך פשוטה שאני אתבייש בכלל ששאלתי אבל... ניקח סיכון: יש לי מחלקה אבסטרקטית ומחלקה שיורשת ממנה:
class operation { protected: int num1,num2; public: operation(int n1,int n2){num1=n1;num2=n2;} virtual int resault()const=0; }; class plus:public operation { public: plus(); void set_pl(int nu1,int nu2);//operation(nu1,nu2){} virtual int resault()const; }; class minus:public operation { public: minus(int nu1,int nu2):eek:peration(nu1,nu2){} void set_mi(int nu1,int nu2);//operation(nu1,nu2){} virtual int resault()const; }; int plus::resault()const { return (num1+num2); } plus::set_pl(int nu1,int nu2) { operation(nu1,nu2); }​
ה MAIN :
int main(void) { operation *op; plus pl; minus mi; char a; int b[2]; cout<<"enter number->operation->number"<<endl; cin>>b[0]; cin>>a; cin>>b[1]; switch (a) { case ´+´: pl.set_pl(b[0],b[1]); op=&pl; cout<<"resault = "<<op->resault()<<endl; break; case ´-´: mi.set_mi(b[0],b[1]); op=&mi; cout<<"resault = "<<op->resault()<<endl; break; } return 0; }​
משום מה יש לי בעיה עם יישום המחלקות והפעלת ה CONSTRUCTOR בפעולת ה SWITCH אני לא מצליח למצוא מה הבעיה.. מי יושיע
תודה.
 

zontar

New member
תיקון קטן :

צריך להיות:
void plus::set_pl(int nu1,int nu2) { operation(nu1,nu2); }​
 
אני לא רוצה להישמע מתנשא,

אבל העתקתי את הקוד, ויש יותר מדי דברים שצריך לשנות אני יכול לעודד אותך ולהגיד שהם קטנים מדי ונחשבים טעויות זניחות. עם זאת, מה התרגיל צריך לעשות?, יעזור כדי למקד את התיקונים שיש... בינתיים: לא קיימים הבנאים הנכונים לכל המחלקות, קח טיפ: תבנה מחלקה לא לצורך התרגיל אלא כאילו משהו אחר צריך לבנות איתה דברים אחרים, לענין: תבנה לכל מחלקה אופציה לברירת מחדל, ופרמטרים. אני גיליתי שבנייה לא לטובת תרגיל אלא בצורה הכללית ביותר אמנם לוקחת זמן רב יותר אבל תשמש אותך לעוד תרגילים בעתיד, ותקנה לך יכולת לבנות מחלקות שימושיות יותר ונטולות החוסרים ה - "קטנים והמעצבנים". סילוו
 
למעלה