Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2014, 09:58   #1
Alexander_886
Новичок
Джуниор
 
Регистрация: 26.04.2014
Сообщений: 1
По умолчанию Про классы. Нужно описать класс, реализующий тип данных ≪вещественная матрица≫ и работу с ними

Нужно описать класс, реализующий тип данных ≪вещественная матрица≫ и работу с ними. Значит, я начал писать с помощью массивом. И вот столкнулся с такой проблемой, что при сложении массив в public static Matrix operator +(Matrix mas, Matrix mas1), а именно temp[i,j] = mas[i,j] + mas1[i,j]; - пишет неоднозначный вызов следующих методов или свойств: WindowsFormsApplication1.Matrix.thi s[int,int]


Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication1
{
class Matrix
{
public double[,] mas = new double[5, 5];
public double[,] mas1 = new double[5, 5];
public double[,] temp = new double[5, 5];

public Matrix(double[,] mas11, double[,] mas22, double[,] temp1)
{
mas = mas11;
mas1 = mas22;
temp = temp1;
}

public double this[int i, int j]
{
get { return mas[i, j]; }
set { mas[i, j] = value; }
}
public double this[int i, int j]
{
get { return mas1[i, j]; }
set { mas1[i, j] = value; }
}
public static Matrix operator +(Matrix mas, Matrix mas1)
{

double[,] temp = new double[5, 5];
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
temp[i,j] = mas[i,j] + mas1[i,j];
}
}
return temp;
}

}
}

Последний раз редактировалось Stilet; 26.04.2014 в 10:07.
Alexander_886 вне форума Ответить с цитированием
Старый 27.04.2014, 12:15   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

У Вас абсолютно одинаковое объявление индексаторов
Код:
public double this[int i, int j]
{
get { return mas[i, j]; }
set { mas[i, j] = value; }
}
public double this[int i, int j]
{
get { return mas1[i, j]; }
set { mas1[i, j] = value; }
}
Поэтому и неоднозначность.
(заметьте - объявление, а не реализация)
Одно нужно выкинуть.

И вообще, на мой взгляд надо много переписывать, зачем-то публичные массивы (надо 1 приватный), зачем-то лишние массивы (mas1 temp - выкинуть из класса), коллизии имён в операторе (из-за лишних массивов и именованию параметров метода оператора).
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++: класс матрица. Действия с ними MR_Andrew Общие вопросы C/C++ 6 21.07.2015 22:02
Описать класс, реализующий тип данных "вещественная матрица" и работу с ними (С#) V i b e Помощь студентам 3 02.04.2013 21:47
Описать класс, реализующий тип данных "вещественная матрица" PROkaZZZniK Помощь студентам 1 12.04.2012 13:11
C# исправление ошибки. Описать класс, реализующий шестнадцатеричный счетчик PROkaZZZniK Помощь студентам 7 09.02.2012 16:29
Класс - вещественная матрица ne4eHbko Общие вопросы .NET 1 29.06.2010 23:34