У меня есть 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 Вызов неоднозначен между следующими методами или свойствами: 'Dinero.Euro.operator + (Dinero.Euro, Dinero.Dollar)'и 'Dinero.Dollar.operator + (Dinero.Euro, Dinero.Dollar)'
Я предполагаю, что это как-то связано с различными пространствами имен, но я не мог понять это, даже используяgoogle.
Это первый вопрос, который я здесь задаю, поэтому, пожалуйста, не бросайте меня в забвение и извините за мой ужасный английский.
Примечание: я вынужден держать доллар иЗанятия евро в другом пространстве имен, чем в основной программе.
Заранее спасибо.