Ошибка C#: вызов неоднозначен между следующими методами или свойствами. Перегрузка операторовC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка C#: вызов неоднозначен между следующими методами или свойствами. Перегрузка операторов

Сообщение Anonymous »

У меня есть 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. Вызов неоднозначен между следующими методами илисвойства: «Динеро.Евро.оператор +(Динеро.Евро, Динеро.Доллар)» и
»Динеро.Доллар.оператор +(Динеро.Евро, Динеро.Доллар)»

Я предполагаю, что это как-то связано с разными пространствами имен, но я не смог понять этого, даже используя Google.
Это — это первый вопрос, который я задаю здесь, поэтому, пожалуйста, не сжигайте меня до забвения и извините за мой ужасный английский.
Примечание: я вынужден держать занятия по доллару и евро в другое пространство имен, чем основная программа.

Подробнее здесь: https://stackoverflow.com/questions/781 ... properties
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»