Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 6

Перегрузка оператора ()

01.12.2011, 15:27. Показов 711. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем
помогите придумать способ реализаци следущей задачи:

есть класс симметричная матрица:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Matrix
{
    public:
        Matrix(unsigned int SizeOfMatrix);
        virtual ~Matrix();
       /.../
        int* operator() (unsigned int i, unsigned int j);
 
    private:
        unsigned int size;
        int **PtrToMatrix;
};
 
Matrix::Matrix(unsigned int SizeOfMatrix)
{
    int i,j;
    size=SizeOfMatrix;
    PtrToMatrix = new int *[size];
    for(i=0;i<size;i++)
    {
        PtrToMatrix[i]=new int[size-i];
        for(j=0;j<(size-i);j++)
        {
            PtrToMatrix[i][j]=size-i-j;
        }
    }
}
 
int Matrix::operator() (unsigned int i, unsigned int j)
{
    if( (i>=size) || (j>=size) ) return NULL;
    if(j<=i) return PtrToMatrix[j][i-j];
    else return PtrToMatrix[i][j-i];
}
требуется реализовать чтобы с элементами матрицы можно было работать только! следущим образом

C++
1
2
3
Matrix a(5);
a(2, 0) = 10;
cout << a(2,5)
вариант

C++
1
2
3
4
5
6
7
int* Matrix::operator() (unsigned int i, unsigned int j)
{
    if( (i>=size) || (j>=size) ) return NULL;
    if(j<=i) return &PtrToMatrix[j][i-j];
    else return &PtrToMatrix[i][j-i];
}
*a(2,0)=10;
не устраивает
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2011, 15:27
Ответы с готовыми решениями:

Перегрузка оператора []
всем доброго времени суток! помогите перегрузить оператор есть у меня класс bd, и массив объектов этого класса table. в классе...

Перегрузка оператора []
Возможно ли создать два перегруженных оператора индексации, чтобы один из них возвращал l-value, другой r-value? В этом примере в обоих...

Перегрузка оператора --
Добрый день, у меня возникла небольшая проблема. Дело в том, что display() работает нормально. Только я не могу понять, что нужно сделать,...

5
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
01.12.2011, 15:35
Реализуй две член-функции:
C++
1
2
int    Matrix::operator() (unsigned int i, unsigned int j) const;
int&   Matrix::operator() (unsigned int i, unsigned int j);
первая - для чтения элемента, вторая - для записи.

PS: чем operator[] не устраивает?
0
Заблокирован
01.12.2011, 15:54
Sambady,

C++
1
2
3
4
5
6
7
8
9
10
11
int & Matrix::operator () ( unsigned int i, unsigned int j ) throw( std::out_of_range )
{
   if ( ! ( i < size  && j < size ) ) throw ( std::out_of_range( "Matrix::operator ()" ) );
   return ( PtrToMatrix[i][j] );
}
 
const int & Matrix::operator () ( unsigned int i, unsigned int j ) const throw( std::out_of_range )
{
   if ( ! ( i < size  && j < size ) ) throw ( std::out_of_range( "Matrix::operator ()" )  );
   return ( PtrToMatrix[i][j] );
}
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
01.12.2011, 16:04
Именно так, только с уточнением: зачем возвращать ссылку на const int ? Не проще ли просто возвратить этот самый int ?
0
Заблокирован
01.12.2011, 16:08
Цитата Сообщение от CheshireCat Посмотреть сообщение
Именно так, только с уточнением: зачем возвращать ссылку на const int ? Не проще ли просто возвратить этот самый int ?
Вы тем самым позволяете сделать класс шаблонным, где будет достаточно тип int заменить на шаблонный параметр.
0
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 6
01.12.2011, 16:21  [ТС]
спасибо большое
всё работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2011, 16:21
Помогаю со студенческими работами здесь

Перегрузка оператора <<
Добрый пень! подскажите как написать код для реалилизации следующего требования: SpecialPrint &lt;&lt; &quot;text&quot; &lt;&lt;...

Перегрузка оператора +
Здравствуйте. Пытаюсь перегрузить оператор сложения, но выдаёт ошибку. Задача в том, чтобы сложить два массива из двух разных объектов...

Перегрузка оператора =
Нужно перегрузить оператор так что бы в начале строки и в конце были квадратные скобки . Все почти работает только вот вывод на экран не...

Перегрузка оператора +
Всем добрый вечер. Прошу помочь разобраться. Задание - Для определения даты поставки строительных материалов необходимо перегрузить...

перегрузка оператора +
Не могу понять: в 184 строке отказывается работать. Без нее - все нормально. Скорее всего неправильно переопределил +.... Но если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru