Inheritance الوراثة

أنشِئ Class :

اسمه: publication

المتغيرات : title , price

يحوي :  Parameterized constructor  و  default constructor و دالة تقرأ من المستخدم  البيانات للمتغيرات  وتخزنها و أخيرًا دالة طباعة.

هذا الـ Class  هو Base Class  ، والتالية هي  Derived Classes  : “مفهوم الوراثة “

الـ Class الأول  :

اسمه: Book 

المتغيرات : Pagecount

يحوي :  Parameterized constructor يقوم بعمل initialize لـ Data Member متضمنة الـ Data Member للـ Base Class  و دالة تقرأ من المستخدم  البيانات للمتغيرات وتخزنها و أخيرًا دالة طباعة.

 

الـ Class الثاني :

اسمه: Tape

المتغيرات : PlayingTinM “Playing Time in minute” .

يحوي :  Parameterized constructor يقوم بعمل initialize لـ Data Member متضمنة الـ Data Member للـ Base Class  و دالة تقرأ من المستخدم  البيانات للمتغيرات وتخزنها و أخيرًا دالة طباعة.

-قم بفصل الـ Class interface  في header file و Class implementation في cpp file

الحل: 

//publication.h

#include <iostream>
#include <string>
using namespace std;

#ifndef CLASS_PUBLICATION
#define CLASS_PUBLICATION

class publication
{
private:
 string title;
 float price;
public:

 publication();
 publication(string t, float p);
 void getdata();
 void putdata() const;
};

#endif
--------------------------------------------------
//publication.cpp
#include <iostream>
#include <string>
#include "publication.h"
using namespace std;

publication::publication(){ title = ""; price = 0; }
publication::publication(string t, float p){ title = t; price = p; }

void publication::getdata()
{
 cout << "Enter title:"; cin >> title;
 cout << "Enter price: "; cin >> price;
}
void publication::putdata() const
{
 cout << "\nTitle: " << title;
 cout << "\nPrice: " << price << endl;
}
-----------------------------------------------
//book.h
#include <iostream>
#include <string>
#include "publication.h"
using namespace std;


class Book :public publication
{
 int PageCount;
public:
 Book(int, float, string);
 void getdata();
 void putdata()const;

};
----------------------------------
//book.cpp
#include <iostream>
#include <string>
#include "publication.h"
#include "Book.h"
using namespace std;


Book::Book(int Pg, float Price, string T) :PageCount(Pg), publication(T, Price){}
void Book::getdata()
{
 publication::getdata();
 cout << "Enter the Page number: "; cin >> PageCount;
}
void Book::putdata()const
{
 cout << "Page Count: " << PageCount << endl << endl;
}
------------------------------------
//tape.h
#include <iostream>
#include <string>
#include "publication.h"
using namespace std;


class Tape : public publication
{
 float PlayingTinM;
public:
 Tape(float, float, string);
 void getdata();
 void putdata()const;
};
----------------------------------------
//tape.cpp
#include <iostream>
#include <string>
#include "publication.h"
#include "Tape.h"
using namespace std;

Tape::Tape(float PTIM, float Price, string T) :PlayingTinM(PTIM), publication(T, Price){}

void Tape::getdata()
{
 publication::getdata();
 cout << "Enter the Playing Time in miunte: "; cin >> PlayingTinM;
}
void Tape::putdata()const
{
 cout << "the Playing Time in miunte: " << PlayingTinM << endl;
}

 

السطر 7 و 8 و 23 : هذا الـ Directive هو حل لهذا الخطأ

 Error 1 error C2011: ‘publication’ : ‘class’ type redefinition c:\users\amjad\documents\visual studio 2013\projects\myblog\myblog\publication.h 7 1 myBlog

السطر 52 و 88 : طريقة الوراثة بكتابة نوع الوراثة ثم اسم الـ Base Class

السطر 70  و 104 : طريقة عمل initialize لمتغيرات الـ Base Class عن طريق مناداة الـ Constructor للـ Base Class

اقتباس

Syntax Error: Const Variable and Sending by Reference

لايمكن إرسال Const Variable بطريقة By reference إلى دالّة .

#include <iostream>
using namespace std;

void fun(int);

void main()
{
   const int ConstVar = 3; //const variable
    fun(ConstVar); 
}
void fun(int & a) // (&) Cause an Error
{
}

 

الخطأ الناتج:

Error 1 error LNK2019: unresolved external symbol “void __cdecl fun(int)” (?fun@@YAXH@Z) referenced in function _main C:\Users\Amjad\documents\visual studio 2013\Projects\myBlog\myBlog\main.obj myBlog

Error 2 error LNK1120: 1 unresolved externals C:\Users\Amjad\documents\visual studio 2013\Projects\myBlog\Debug\myBlog.exe 1 1 myBlog