- Home /
IComparable error due to float
I am writing a list for my game,
But as I need it to have a string and a float,
So I am using unity's script in for this purpose but I want to use a float instead of unity's use of an int, This is unity's code with my changes in float's but I am still getting the error:
Assets/PlayerMovement.cs(9,14): error CS0738:
PlayerMovement' does not implement interface member
System.IComparable.CompareTo(PlayerMovement)' and the best implementing candidatePlayerMovement.CompareTo(PlayerMovement)' return type
float' does not match interface member return type `int'
using UnityEngine;
using System.Collections;
using System; //This allows the IComparable Interface
//This is the class you will be storing
//in the different collections. In order to use
//a collection's Sort() method, this class needs to
//implement the IComparable interface.
public class PlayerMovement : IComparable<PlayerMovement>
{
public string movementName;
public float timeOfMovement;
public PlayerMovement(string newMovementName, float newTimeOfMovement)
{
movementName = newMovementName;
timeOfMovement = newTimeOfMovement;
}
//This method is required by the IComparable
//interface.
public int CompareTo(PlayerMovement other)
{
if(other == null)
{
return 1;
}
//Return the difference in power.
return timeOfMovement - other.timeOfMovement;
}
}
How can I remove this error and still use floats in my list, Thanks in advance, NightLucidity
Answer by Dave-Carlile · Aug 31, 2015 at 09:06 PM
I think you're misunderstanding the purpose of the CompareTo function. It returns < 0 if the current object should sort before the other object, > 0 if it's after, and 0 if they're equal. The data type must be int
because that's the definition of the interface, and the data type has no relationship to any other data type in your class. It's simply a way to return the relationship between two objects (-1, 0, +1).
Yes, I understand that but I was wondering if there was some way, (Another $$anonymous$$ethod maybe), to do this. If not its fine I found another way to do what I needed it is just a little longer than using this Class. Thanks NightLucidity.
Your answer
Follow this Question
Related Questions
What is wrong with my throttle script? 2 Answers
String can't be converted to float or int? 1 Answer
Cannot implicitly convert type 'float' to 'bool' 3 Answers
Turn float to int 2 Answers