PDA

View Full Version : سوال: ارث بری در کلاس ++C



majid.nasirinejad
شنبه 23 مرداد 1389, 10:56 صبح
با سلام خدمت همه دوستان
این فایل پیوست شامل 1 فایل اصلی و یک فایل کلاس ها ست. من دو تا کلاس "Student" و "Academician" درست کردم، و کل برنامه رو بر همین پایه نوشتم... حالا باید این موضوع تغییر کنه و به سه کلاس تبدیل بشه... کلاس "Human" و "Student" و "Academician" ... و در کلاس Human ، شماره شناسایی شخص ، نام شخص و نام دانشکده ثبت بشه.
من کلاس Human رو اینطوری درست کردم و کلاس Student رو هم تغییر دادم... اما از مشکل به وجود اومده اصلا سر در نمیارم...
ممنون میشم کسی بتونه راهنمایی ام کنه



class Human{ // Human Class
string ID,name,faculty;
public:
Human(string hID){
this -> hID=ID}
Human(string hname){
this -> hname=name}
Human(string hfaculty){
this -> hfaculty=faculty}

void setID(){ cout<<"\t\tID: ";
cin>> hID;}
void setName(){ cout<<"\t\tName: ";
cin>> hname;}
void setFaculty(){ cout<<"\t\tFaculty: ";
cin>> hfaculty;}
};

class Student:public Human{ // Student Class
string degree;
public:
Student(string id,string na,string fac,string degree)
:Human(hID,hname,hfaculty){
this -> degree=degree;}

vector <string> v;
void setS();
void printS();
};

void Student::setS(){

setID();
setName();
setFaculty();
cout<<"\t\tDegree: ";
cin>>degree;
v.push_back(ID);
v.push_back(name);
v.push_back(faculty);
v.push_back(degree);
}

BeginnerProgrammer
شنبه 23 مرداد 1389, 14:14 عصر
با سلام
پروژه ای که شما فرستادید اشکالات جزئی تقریبا زیادی داشت ولی اشکال اصلیش به خاطر این دو خطه

#include "CP-Project-Full-class.cpp"
#include "human.cpp"
البته شما human رو اینکلود نکردین که باید میکردین. برای رفع مشکل پروژه تون باید کد مربوط به این دو تا کلاسو داخل هیدرفایلها مینوشتین و بعد اونها رو اینکلود میکردین:

#include "CP-Project-Full-class.h"
#include "human.h"یکی دیگه از اشکالای اساسی پروژتون اینه که تعریف کلاس Student رو هم داخل کلاس human و هم داخل کلاس CP-Project-Full-class.cpp آوردین که نیازی به این کار نبود برای همین من کل این کلاسو به داخل فایل human.h منتقل کردم . نکته دیگه استفاده مکرر از این عبارت بود

Human(string )
که فقط اسم متغیر بعد از واژه string رو تغییر دادین در واقع شما با این کار چنتا کانستراکتور برای یک کلاس تعریف کردن چون اسم آرگومان ورودی چیز قابل اهمیتی نیست و همه اینها معرف کانستراکتور هستند که باعث ایجاد خطا شده برای همین من تمامی متغیرهایی که لازم بود مثل id و ... که شما در کانستراکتورهای جداگانه آنها را set میکردید به یک کانستراکتور منتقل کردم. برای اینکه منظورم رو دقیق متوجه بشید فایل زیر رو که پروژه ی کامپایل شده شما بدون خطاس (البته بررسیش کنید چون ممکن بعضی جاهاش تغییر کرده باشه ) گذاشتمproject.zip
54182
فایله اجراییشم داخل (run.zip) هست.
54183
(پیشنهاد میکنم اول فایل اجراییشو ببینید :لبخندساده: )

majid.nasirinejad
شنبه 23 مرداد 1389, 17:53 عصر
دوست عزیز بسیار متشکرم... به خدا اینقدر ها هم بهم ریخته نیست کارم. این یه خورده عجله ای آپلود شده بود :) ...(الان که خودم دوباره نگاه کردم دیدم چه چیز افتضاحی رو آپلود کردم-بازم معذرت) انشاء الله تموم شده و مرتب شده اش رو میزارم اگر کسی خواست استفاده کنه ...
بازهم بسیار ممنونم از لطف شما...