الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود بالتمبلت تقريبا صحيح بس فيه مشكله بالمين

بدأه مريتعي في 10 يونيو 2009 · 2 رد · 409 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

لو سمحتم عندي كود صحيح الحمدلله ماعدا المين فيه مشكله عند هذا السطر

Plants <int>*s=&p ;

الكود هو

#include <iostream>
#include <String>
using namespace std;
template <class T>

class Plants {

	  private:
	string PlantName;
	T dataentryID;
public:
 //virtual void purefun()=0;
	Plants(string type):PlantName(type){};
	virtual void setAgefunction();

	virtual void printinfo();

	virtual void setid();

	virtual T getid();
	virtual string GetPlantName()const {return PlantName;}

};

template <class T>
class Biennials: public Plants<T>{
private:
	int AGE;
	T dataentryID;

public:
	Biennials():Plants<T>("Biennials"){}
	int GetAge()const {return AGE;}
	bool setAgefunction(int s)
{
 if(s>=2)
 {
   AGE=s;	  
 cout<<"the age of Perennials" <<AGE;
 return true;
}
 else
 cout<<"Error"<<endl;
}

	void printinfo()
	{
 cout<<"The age of plant is:"<<GetAge()<<endl;
 cout<<"Tha id is:"<<getid();
 //cout<<"The name is:"<<Plants::GetPlantName();
}
void setid(T r)
{
  dataentryID=r;

}
T getid()
{
		return dataentryID;
}	   

};

template <class T>
class Perennials: public Plants<T>{
private:
	int AGE;
	T dataentryID;
public:
Perennials(): Plants<T>("Perennials"){}
	int GetAge() const {return AGE;}
bool setAgefunction(int s)
{


 if(s>=2)
 {
   AGE=s;	  
 cout<<"the age of Perennials" <<AGE;
 return true;
}
 else
 cout<<"Error"<<endl;
}
 	void printinfo()
	{
 cout<<"The age of plant is:"<<GetAge()<<endl;
 cout<<"Tha id is:"<<getid();
}
void setid(T r)
{
  dataentryID=r;

}	  

T getid()
{
		return dataentryID;
} 	


};


int main()
{




   Biennials <int>p();
	 Plants <int>*s=&p;



	 s->setAgefunction(2);
	s->setid(7);


	s->printinfo();



	 Perennials<int> e;
	Plants <int> *p=&e;

	 p->setAge function(5);
	  p->setid(3);
	p->printinfo();

	system("pause");
	return 0;

}

وشكرا جزيييييييييييييييييييييييييييييييييلا :blush:

#2

هذه النسخه الجديده من برنامجك و هى تعمل اقرأ الكود و سترى الفرق!

 

[color= #007f00;]#include <iostream>

[color= #007f00;]#include <String>

[color= #0000ff;]using [color= #0000ff;]namespace std;

 

[color= #0000ff;]template [color= #000000;]<[color= #0000ff;]class T[color= #000000;]>

[color= #0000ff;]class Plants

[color= #000000;]{

[color= #0000ff;]private[color= #000000;]:

    string PlantName;

    [color= #0000ff;]int       nAge;

    T         dataentryID;

 

[color= #0000ff;]public[color= #000000;]:

    Plants[color= #000000;](string type[color= #000000;])[color= #000000;]:PlantName[color= #000000;](type[color= #000000;])[color= #000000;]{[color= #000000;]};

 

	[color= #0000ff;]bool setAge[color= #000000;]([color= #0000ff;]int age[color= #000000;])

	[color= #000000;]{

		[color= #0000ff;]if[color= #000000;](age [color= #000000;]>= [color= #ff0000;]2[color= #000000;])

		[color= #000000;]{

			nAge[color= #000000;]=age;

			cout[color= #000000;]<<[color= #A31515;]"the age of "[color= #000000;]<< PlantName [color= #000000;]<< [color= #A31515;]" is " [color= #000000;]<< nAge [color= #000000;]<< endl;

			[color= #0000ff;]return true;

		[color= #000000;]}

		[color= #0000ff;]else

		[color= #000000;]{

			cout[color= #000000;]<<[color= #A31515;]"Error"[color= #000000;]<<endl;

			[color= #0000ff;]return false;

		[color= #000000;]}

	[color= #000000;]}

 

	[color= #0000ff;]int  getAge[color= #000000;]([color= #0000ff;]void[color= #000000;]) [color= #0000ff;]const

	[color= #000000;]{[color= #0000ff;]return nAge;[color= #000000;]}

 

	[color= #0000ff;]void setid[color= #000000;](T id[color= #000000;])

	[color= #000000;]{dataentryID [color= #000000;]= id;[color= #000000;]}

 

    T getid[color= #000000;]([color= #000000;]) [color= #0000ff;]const

	[color= #000000;]{[color= #0000ff;]return dataentryID;[color= #000000;]}

 

    string getPlantName[color= #000000;]([color= #000000;])[color= #0000ff;]const

	[color= #000000;]{[color= #0000ff;]return PlantName;[color= #000000;]}

 

	[color= #0000ff;]void printinfo[color= #000000;]([color= #000000;])

	[color= #000000;]{

		cout [color= #000000;]<< [color= #A31515;]"The age of plant is "[color= #000000;]<< getAge[color= #000000;]([color= #000000;]) [color= #000000;]<< endl;

		cout[color= #000000;]<<[color= #A31515;]"Tha id is " [color= #000000;]<< getid[color= #000000;]([color= #000000;]) [color= #000000;]<< endl;

	[color= #000000;]}

[color= #000000;]};

 

[color= #0000ff;]template [color= #000000;]<[color= #0000ff;]class T[color= #000000;]>

[color= #0000ff;]class Biennials[color= #000000;]: [color= #0000ff;]public Plants[color= #000000;]<T[color= #000000;]>

[color= #000000;]{

[color= #0000ff;]public[color= #000000;]:

    Biennials[color= #000000;]([color= #000000;])[color= #000000;]:Plants[color= #000000;]<T[color= #000000;]>[color= #000000;]([color= #A31515;]"Biennials"[color= #000000;])[color= #000000;]{[color= #000000;]}

[color= #000000;]};

 

[color= #0000ff;]template [color= #000000;]<[color= #0000ff;]class T[color= #000000;]>

[color= #0000ff;]class Perennials[color= #000000;]: [color= #0000ff;]public Plants[color= #000000;]<T[color= #000000;]>

[color= #000000;]{

[color= #0000ff;]public[color= #000000;]:

	Perennials[color= #000000;]([color= #000000;])[color= #000000;]: Plants[color= #000000;]<T[color= #000000;]>[color= #000000;]([color= #A31515;]"Perennials"[color= #000000;])[color= #000000;]{[color= #000000;]}

[color= #000000;]};

 

 

[color= #0000ff;]int main[color= #000000;]([color= #000000;])

[color= #000000;]{

   Biennials [color= #000000;]<[color= #0000ff;]int[color= #000000;]> [color= #000000;]*p [color= #000000;]= [color= #0000ff;]new Biennials [color= #000000;]<[color= #0000ff;]int[color= #000000;]>[color= #000000;]([color= #000000;]);

   Plants [color= #000000;]<[color= #0000ff;]int[color= #000000;]> [color= #000000;]*s[color= #000000;]=p;

 

   s[color= #000000;]-[color= #000000;]>setAge[color= #000000;]([color= #ff0000;]2[color= #000000;]);

   s[color= #000000;]-[color= #000000;]>setid[color= #000000;]([color= #ff0000;]7[color= #000000;]);

 

   s[color= #000000;]-[color= #000000;]>printinfo[color= #000000;]([color= #000000;]);

 

   [color= #0000ff;]delete p;

 

   Perennials[color= #000000;]<[color= #0000ff;]int[color= #000000;]> [color= #000000;]*e [color= #000000;]= [color= #0000ff;]new Perennials[color= #000000;]<[color= #0000ff;]int[color= #000000;]>[color= #000000;]([color= #000000;]);

   s[color= #000000;]=e;

 

   s[color= #000000;]-[color= #000000;]>setAge[color= #000000;]([color= #ff0000;]5[color= #000000;]);

   s[color= #000000;]-[color= #000000;]>setid[color= #000000;]([color= #ff0000;]3[color= #000000;]);

   s[color= #000000;]-[color= #000000;]>printinfo[color= #000000;]([color= #000000;]);

 

    [color= #0000ff;]delete e;

 

   system[color= #000000;]([color= #A31515;]"pause"[color= #000000;]);

   [color= #0000ff;]return [color= #ff0000;]0;

[color= #000000;]}

الأخطاء الموجوده داخل النسخه الخاصه بك:

1 - احد اهداف الوراثه عدم تكرار الكود و احد اهداف الـ Templates هو كتابة كود مرة واحده لمختلف انواع البيانات.

2 - داخل الـ main : لا يمكن جعل مؤشر من نوع Derived class يشير إلى مؤشر لـ Derived class اخرى إلا لو كانت إحداهما Base class للأخرى.

3 - داخل الـ Base class كل الدوال معرفه بـ virtual و لا يوجد كود مكتوب لبعضهم، فقط الـ pure virtual function التى لا يتم كتابه كود لها إلا فى الـ derived class.

تم تعديل هذه المشاركة بواسطة Game Expert في 11 يونيو 2009 في 03:25

مدونتي: C++ Tips and Tricks

#3

جزاك الباري خيرا وبارك الله فيك :clapping:

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…