No overload for method error

C# bubblesort for string

Page 1 of 1

1 Replies - 2194 Views - Last Post: 12 October 2008 - 04:43 PM Rate Topic: -----

#1 deedee66  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 17
  • Joined: 21-September 08

No overload for method error

Post icon  Posted 12 October 2008 - 04:10 PM

Hello,

I am receiving an overload error method, and i am too much of a newbie to figure out what it means. I have a toString all ready declared and it says I can not do that again. Any help will be appreciated.

the assignment was to return the employee names in alphabetical order with a bubble sort.

the first assignment was to return in salary order and I got that one no problem. But the string compare is just not working out for me.


using System;

namespace BubbleSort2
{
	class BubbleSort2
	{
		static public void Sort(object [] sortArray, CompareOp gtMethod)
		{
			for (int i=0; i<sortArray.Length; i++)
			{
				for (int j=i+1; j<sortArray.Length; j++)
				{
				if (gtMethod(sortArray[j], sortArray[i]))
				{
					object temp = sortArray[i];
					sortArray[i] = sortArray[j];
					sortArray[j] = temp;
				}
			}
		}
	}
}
class Employee // : object
{
	private string name;
	private decimal salary;
	
	public Employee(string name, decimal salary)
	{
		this.name = name;
		this.salary = salary;
	}
	public override string ToString()
	{
	  return string.Format(name + ", {0:C}", salary);
	}
	
	public static bool RhsIsGreater(object lhs, object rhs)
	{
		Employee empLhs = (Employee) lhs;
		Employee empRhs = (Employee) rhs;
		
		return (string.Compare()(empRhs.name == empLhs.name)) ? true:false;
		
	}
}
delegate bool CompareOp(object lhs, object rhs);

class bubbleSort
{
	static void Main()
	{
		Employee [] employees =
		{ new Employee("Bugs Bunny", 20000),
		  new Employee("Elmer Fudd", 10000),
		  new Employee("Daffy Duck", 25000),
		  new Employee("Wiley E. Coyote", (decimal)1000000.38),
		  new Employee("Foghorn Leghorn", 23000),
		  new Employee("RoadRunner", 50000)
		};
		
		CompareOp employeeCompareOp = new CompareOp(Employee.RhsIsGreater);
		BubbleSort2.Sort(employees, employeeCompareOp);
		
		for (int i=0; i<employees.Length; i++)
			Console.WriteLine(employees[i].ToString());
	}
}
}



Is This A Good Question/Topic? 0
  • +

Replies To: No overload for method error

#2 Martyr2  Icon User is offline

  • Programming Theoretician
  • member icon

Reputation: 4332
  • View blog
  • Posts: 12,127
  • Joined: 18-April 07

Re: No overload for method error

Posted 12 October 2008 - 04:43 PM

The problem is with this line...

return (string.Compare()(empRhs.name == empLhs.name)) ? true:false;



Notice that you have .Compare() but you don't put anything into it. It is saying no overload takes 0 arguments... meaning you have to supply something in that function...

Try this...

// Here we are comparing the two names for equality and empRhs is greater than empLhs then we return true, otherwise they are equal or rhs is less than lhs
return (string.Compare(empRhs.name,empLhs.name) > 0)? true : false;



That should solve the immediate problem.

"At DIC we be left hand and right hand comparing code ninjas.... I bet you your hand is bigger than your face *smack*" :snap:
Was This Post Helpful? 1
  • +
  • -

Page 1 of 1