2013-11-20 2 views
1

MyDate - это структура, которая содержит год, месяц, день, пробел конструктора и некоторые другие методы. Я думал, что попытаюсь переопределить несколько операторов и посмотреть, смогу ли я сделать эту работу. Я нашел пример в MSDN переопределения оператора в структуре и попытался дублировать его с действием, которое мне нужно. Я добавил этот код в структуру MyDate, чтобы переопределить «-», вычесть.Оператор Override в структуре получает ошибку при использовании «Нельзя применять ...»

public static int operator -(MyDate a, MyDate b) 
    { 
     return a.Span - b.Span; 
    } 

Когда я использую его в другой программе:

 MyDate aDate = new MyDate(2, 15, 1990); 
     MyDate bDate = new MyDate(3, 15, 1990); 
     lAns = bDate - aDate; 

Я получаю сообщение об ошибке: Error 1 Operator '-' не может быть применен к операндам типа 'EulerLibrary.MyDate' и «EulerLibrary. MyDate 'C: \ Users \ Henry Wollman \ Documents \ Visual Studio 2010 \ Projects \ EulerProblem19 \ EulerProblem19 \ Form1.cs 115 20 EulerProblem19

любые мысли о том, почему это не работает? Как я сказал ранее, он точно отражает пример в MSDN.

+0

'-' не перегружен для вашего ** собственного типа данных **. Вы должны перегрузить этого оператора. –

+2

Он должен работать, как описано. Таким образом, ваш фактический код не является тем, что было описано. Можете ли вы опубликовать автономный репрограмм? – usr

+0

Это должно работать нормально, ссылаетесь ли вы на старую версию сборки в другом проекте? – Lee

ответ

1

Предполагая, что код operator -, который вы представили в вопросе, включен в определение MyDate, то то, что вы опубликовали, должно работать нормально.

Поскольку вы говорите: «Когда я использую его в другой программе», я предполагаю, что произошло то, что сборка, в которой определена MyDate, устарела (например, другая программа подбирает другую копию, чем та, в которую вы добавили перегруженный оператор). Возможно, произошла ошибка компиляции сборки MyDate, и она не перестраивается?

+0

Я думал, что это может быть проблемой, и перекомпилировала библиотеку, содержащую определение структуры MyDate. У меня были проблемы с библиотекой. Я не могу найти простой способ указать отладочную или выпускную сборку, и иногда файл символов не включается, но ссылка, похоже, не дает мне возможности убедиться, что символы загружены. Я разработал систему модификации и создания библиотеки в одном экземпляре Visual Studio, а затем мою программу, которая использует библиотеку в другом экземпляре, и она обычно работает. Появились другие изменения, которые я сделал. Я дам это посмотреть. –

+0

Мне пришлось копать немного, но в конце концов обнаружил, что ссылка была указана на неправильную DLL. Теперь он компилируется, и мне просто нужно отлаживать несколько вещей. Спасибо за помощь. –

Смежные вопросы