کاربرد اشاره گر به تابع برای نوشتن برنامه با نوع داده ی نامشخص - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

کاربرد اشاره گر به تابع برای نوشتن برنامه با نوع داده ی نامشخص

+1 امتیاز

سلام.من می خواستم اگه منبعی  در ارتباط با  کار با نوع داده نا مشخص سراغ دارید معرفی کنید.منظورم اینه که مثلا ما می خوایم یه کلاس بنوسیم که پارامتر بعضی از توابع آن رو نمی دونم و قراره کاربر مشخص کنه.مثالی که مورد نظر من هست اینه که کلاسی لینک لیستی داشته باشیم که نوع data رو نمی دونیم همچنین کاربر باید تعیین کنه که می خواد ندهای صعودی مرتب باشند یا نزولی .مشکل من با این مسأ له اینه که درست نمیدونم چجوری باید با این نوع داده نا مشخص کارکرد.

ممنون میشم اگه کمکم کنید.

class Node
	{
	public:
		Node *next;
		void* data;
	};
	class linklist
	{
	private:
		Node* head;
	public:
		linklist ()
		{
           head=0;
		}
		~linklist()
		{
		}
		void Add(void* value,int size,int (*comp)(void*))
		{
			Node* new_data=new Node;
			Node *p,*q=head;
			char* tmp=(char *)value;
			new_data->data=value;
			int flag=0;
			if(comp(tmp)==1)
			{
				if(!head)
				{
					head=new_data;
					new_data->next=0;
				}
				while(p && p->data<value)
				{
					flag=1;
					q=p;
					p=p->next;
				}
				if(flag==0)
				{
					head=new_data;
					new_data->next=p;
				}
				if(!p)
				{
					new_data->next=0;
				}
				else
				{
					new_data->next=p;
				}
				q->next=new_data;
			}
		}
		void remove()
		{
		}
		linklist operator +(linklist & other)
		{
			//do linklist gerfte va edghamesh mikone.
		}
		linklist operator -(linklist &other)
		{
		}
	};
	int user(void *inf)
	{
		int ai=*((int*)inf);
		return 1;
	}

 

سوال شده اسفند 21, 1392  بوسیله ی maryam (امتیاز 338)   12 33 44
دوباره تگ گذاری شد مرداد 28, 1393 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام راه درستش استفاده از template هستش مثلا  کلاس Node شما باید به این شکل باشه :

template<class T>
class Node
{
     Node<T> *next;
     T data;
};

در ضمن operator + , operator - هم اصولا باید  داده از نوع & بر گردونن (برای کپی نشدن بی مورد ) و این که این جا  برای درست کار کردن کد نیاز به operator=  و copy constructor هم دارید .

برای ایده گرفتن این سوال رو هم ببینید  :deque

در مورد منبع هم اکثر  کتاب های c++ درباره template ها مطالبی دارن .

پاسخ داده شده اسفند 22, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 22, 1392 بوسیله ی Ali Rahbar
...