У меня есть 2 класса с перегруженными операторами в пространстве имен Dinero, это 2 класса:
Первый:
namespace Dinero
{
class Dollar
{
#region Atributos
public Double cant;
#endregion
#region Constructores
public Dollar()
{
this.cant = 0;
}
public Dollar(Double amount)
{
this.cant = amount;
}
#endregion
#region Sobrecarga de Operadores
public static Dollar operator +(Euro eu, Dollar dol)
{
Dollar devolucion = new Dollar();
devolucion.cant = eu.cant + (dol.cant * 1.3642);
return devolucion;
}
public static Dollar operator -(Euro eu, Dollar dol)
{
Dollar devolucion = new Dollar();
devolucion.cant = eu.cant + (dol.cant * 1.3642);
return devolucion;
}
public static bool operator ==(Euro eu, Dollar dol)
{
if (eu.cant == (dol.cant * 1.3642))
return true;
else
return false;
}
public static bool operator !=(Euro eu, Dollar dol)
{
if (eu.cant != (dol.cant * 1.3642))
return true;
else
return false;
}
#endregion
}
}
Второй:
namespace Dinero
{
class Euro
{
#region Atributos
public Double cant;
#endregion
#region Constructores
public Euro()
{
this.cant = 0;
}
public Euro(Double amount)
{
this.cant = amount;
}
#endregion
#region Sobrecarga de operadores
public static Euro operator +(Euro eu, Dollar dol)
{
Euro devolucion = new Euro();
devolucion.cant = eu.cant + (dol.cant * 1.3642);
return devolucion;
}
public static Euro operator -(Euro eu, Dollar dol)
{
Euro devolucion = new Euro();
devolucion.cant = eu.cant - (dol.cant * 1.3642);
return devolucion;
}
public static bool operator ==(Euro eu, Dollar dol)
{
if (eu.cant == (dol.cant * 1.3642))
return true;
else
return false;
}
public static bool operator !=(Euro eu, Dollar dol)
{
if (eu.cant != (dol.cant * 1.3642))
return true;
else
return false;
}
#endregion
}
}
И когда я перехожу к основной программе (я не знаю, как вы, ребята, вызываете главный файл, я хотел бы знать, так как я всего n00b), и я набираю это:
namespace Ejercicio_21
{
class Ejercicio_21
{
static void Main(string[] args)
{
Console.Title = "Ejercicio Nro 21";
Euro euro00 = new Euro(1);
Dollar dollar00 = new Dollar(1);
Euro sumaEuros = euro00 + dollar00;
О последней строке компилятор говорит:
Ошибка 11 Вызов неоднозначен между следующими методами или { {1}} свойства: «Dinero.Euro.operator + (Dinero.Euro, Dinero.Dollar)» и «Dinero.Dollar.operator + (Dinero.Euro, Dinero.Dollar)»
I Предположим, это как-то связано с разными пространствами имен, но я не мог понять этого, даже используя Google.
Это первый вопрос, который я задаю здесь, поэтому, пожалуйста, не доводите меня до забвения и извините за мой ужасный английский.
Примечание: я вынужден хранить классы Dollar и Euro в другом пространстве имен, чем основная программа.
Заранее благодарю.