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

ترى ماهو الخطأ في بناء هذه الفئات

مغلق
بدأه Dr.Pain في 22 نوفمبر 2006 · 3 رد · 651 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الموضوع بما فيه هو انني اريد القيام بعمل فئة تقوم بدور المجمع للارقام يعني List وقمت بكتابة هذا الكود :

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>



template<class No>
class List{

protected :
	No* lst;
	int Cursor;

	List(){
		this->lst= new No;
		this->Cursor = 0;
		};


};


template<class No>
class Accumulator : public List<class No>{

public :

		void AddNo(No NewNo){
			this->lst[this->Cursor] = NewNo;		
	};

	No GetSum(){
		No temp;

		for(i = 0; i < this->Cursor - 1; i++)
			temp+= this->lst;
		return temp;
	};


};


main(){

	Accumulator x; // here u r gonna find an error
	getchar();

};

وعندما اقوم بعمل ترجمة للكود لا اجد اي خطأ , ولكن الخطأ يظهر عندما احاول ان اقوم بتعريف متغير جديد من الفئة داخل الدالة Main ففي ال ++VC تظهر رسالة الخطأ التالية :

use of class template requires template argument list

اما في ال borland فانه تظهر هذه الرسالة :

Invalid use of template

الرجاء مساعدتي جزاكم الله خيرا ........

اخوكم Dr.Pain

Console.rar

#2

يجب أن تحدد نوعا لـAccumulator مثلا int

Accumulator<int> x;

إليك هذه الطريقة

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>

template <class T>
class List
{
	 T *v;
	 int size;

  public:
	 List(int n) {v=new T[n]; size=n;}
	 T& operator[](int i) {return v;}
	 void FillList(){for(int i=0;i<size;i++) cin>>v;}
	 T GetSum() {T Sum=0; for(int i=0;i<size;i++) Sum+=v; return Sum;}
};

void main()
{
	 cout<<"List of integers\n";
	 List<int> L_int(5);
	 L_int.FillList();
	 cout<<"The sum is : "<<L_int.GetSum();
	 cout<<"\nList of floats\n";
	 List<float> L_float(3);
	 L_float.FillList();
	 cout<<"The sum is : "<<L_float.GetSum();
	 getchar();
}
#3

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

جزاك الله خيرا اخي TigerZ!D على الرد ولكن المشكلة ظلت قائمة ,,,

حسنا اليك فكرتي وما اريد ان اقوم بعمله بالضبط ,,

الفكرة تقول انه لدينا فئة اسمها List وهي فئة مجردة Abstract لا يجوز استخدامها الا بعد وراثتها

لكل الفئات التي سوف تناط بها عمليات خزن البيانات .

ولكنني عندما حاولت عمل ذلك قابلتني رسالة الخطأ تلك التي ذكرتها في مشاركتي الاولى

وايضاً لم اعرف كيف اقوم بجعل الفئة Abstract فمثلا في VB.Net كنت استخدم الكلمة المحجوزة

MustInherit لجعل الفئة غير قابله للاستخدام الا بالوراثة ولكن لم اعرف عمل ذلك في ++C .

تلك كانت مشكلتي ,,,,,

اخوكم Dr.Pain

#4

مرحبا اخي

راجع هذا الدرس

انقر هنا

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

هذا الموضوع مغلق.

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