PDA

View Full Version : اشكال در Overload كردن اپراتور هاي > , < و ... در يك كلاس Generic



yasercomeng
پنج شنبه 03 مرداد 1387, 02:27 صبح
سلام .كد زير از نظر ويژوال استديو مشكل دارد من تويه كتابه Apress هم خوندم گفته كه يه همچين كاري رو نمي شه تويه ويژوال استديو 2008 انجام داد پس من چه طور مي تونم اين كلاس رو داشته باشم؟


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace MyProgram
{
class MinHeap<Item> : IEnumerable<Item>
{
//property
int Size;
int Current;
List<Item> Heap;

//methods
bool IsEmpty()
{
if (this.Current == 0)
return true;
return false;
}
bool IsFull()
{
if (this.Current == this.Size)
return true;
return false;
}
public bool Insert(Item InsertionVar)
{
if (IsFull())
return false;
this.Current++;
int i = 0;
for (i = this.Current; true; )
{
if (i == 1)
break;
if (InsertionVar >= this.Heap[i / 2])
break;
this.Heap[i] = this.Heap[i / 2];
i /= 2;
}
this.Heap[i] = InsertionVar;
return true;
}
public Item Export()
{
if (IsEmpty())
return default(Item);
Item FirstVal = this.Heap[1];
Item k = this.Heap[this.Current];
this.Current--;
int i = 1, j = 2;
for (;j <= this.Current; )
{
if (j < this.Current)
if (this.Heap[j] > this.Heap[j + 1])
j++;
if (k <= this.Heap[j])
break;
this.Heap[i] = this.Heap[j];
i = j; j *= 2;
}
this.Heap[i] = k;
return FirstVal;
}

//constructor
public MinHeap()
{
this.Size = 0;
this.Current = 0;
this.Heap = null;
}
MinHeap(int Size)
{
this.Size = Size;
this.Current = 0;
this.Heap = new List<Item>(Size + 1);
for (int i = 0; i <= this.Size; i++)
this.Heap[i] = default(Item);
}

//derived methods
IEnumerator<Item> IEnumerable<Item>.GetEnumerator()
{
return this.Heap.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.Heap.GetEnumerator();
}
}
}

yasercomeng
پنج شنبه 03 مرداد 1387, 22:29 عصر
كسي نبود؟
به نظر مشكل بزرگيه ها ولي جالب اينجاست كه كسي جوابي براش نداره.يه نظري‏ ايده اي چيزي بديد ديگه.

yasercomeng
پنج شنبه 03 مرداد 1387, 22:32 عصر
فعلا يه چيزي پيدا كردم چكش مي كنم نتيجه رو اينجا مي نويسم:
CodeProject: Operator Overloading with Generics. Free source code and programming help (http://www.codeproject.com/KB/cs/genericoperators.aspx)