Форум программистов, компьютерный форум CyberForum.ru

Обращение к объекту с помощью перегруженной операции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Рандом с плавающей точкой, как? http://www.cyberforum.ru/cpp-beginners/thread336354.html
Здравствуйте, как реализовать rand() или другой рандом с плавающей точкой, т.е. например чтобы он мне выводил число от 1.0 до 2.5?
C++ Выход из программы и самопроизвольное выполнение пункта При запуске программы открывается меню. Если выбрать игра, то все в норме. Если выбрать помощь, то открывается помощь и сразу в след за ней открывается игра( как так?), если выбрать третий пункт, то выводится сообщение из третьего пункта, а затем открывается игра( почему?). Почему игра открывается сама по себе всегда? Как сделать выход из программы, то есть при нажатии "3", чтобы cmd окно... http://www.cyberforum.ru/cpp-beginners/thread336313.html
Проверка на цифру C++
Написал относительно простую консольную игру. При запуске открывается меню, и там 3 пункта. Если человек вводит "4", то появляется сообщение об ошибке( это я смог реализовать), но если ввести любой другой символ( кроме цифры), например любую букву, то программа переходит в бесконечный цикл, и программа начинает выдавать текст, который выдавать она не должна. Как сделать проверку что это именно...
C++ Помогите понять задачу в теории
Не могу понять как должна и что считать задача,помогите. Дана квадратная матрица порядка n. Получить вектор Аb, где b - вектор, элементы которого вычисляются по формуле b i = 1/i^2+2 , если i- четное b i = 1/i в противном случае (i=1,..., n)
C++ ошибка в формуле http://www.cyberforum.ru/cpp-beginners/thread336301.html
Народ, привет!!! Выкладываю свой код: #include<iostream.h> #include<conio.h> #include<string.h> #include<windows.h> char ch; char *Rus(const char in,char z); char *Rus(const char in,char z)
C++ Передача указателя на строку методу класса после того как я изменил содержание указателя name на Nika Gamkrelidze, name в объекте не изменилось. наверное потому что новое значение расположенно в другой части памети, да? а есть ещё способы передачи строк с помощю указателей? #include <iostream> class info { char * name, * phone; public : void set_name(char * n) {name=n;} void set_phone(char * p) {phone=p;}... подробнее

Показать сообщение отдельно
Seatless
1 / 1 / 0
Регистрация: 19.06.2011
Сообщений: 24
26.07.2011, 17:35     Обращение к объекту с помощью перегруженной операции
У меня есть перегруженная операция (), возвращающая rvalue
C++
1
2
3
4
5
6
7
8
9
10
11
int Array::operator()( int a, int b ) const
{
    if ( a < 0 || b < 0 || a >= row || b >= column )
    {
        cerr << "\nError: one of subscriptes is out of range\n";
        exit( 1 );
    }
 
    else
        return ptr[ a * ( column + 1 ) + b ];
}
(по заданию нужно, чтобы в динамическом одномерном массиве int *ptr размерами row*column хранился 2х-мерный массив и к его элементам можно было бы обращаться таким образом: arr( 1, 3 ), например.) Так вот как можно обратиться через эти перегруженные скобки к текущему объекту? Например в операции сравнения на равенство:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool Array::operator==( Array &arr ) const
{
    if ( row == arr.row && column == arr.column )
    {
        for ( int i = 0; i < row; i++ )
            for ( int j = 0; j < row; j++ )
                if ( ptr[ i * ( column + 1 ) + j ] != arr( i, j ) )
                    return false;
        return true;
    }
 
    else
        return false;
}
Вместо строки if ( ptr[ i * ( column + 1 ) + j ] != arr( i, j ) ) как можно сделать что-то вроде if ( this( i, j ) != arr( i, j ) ) ?( такая строка не работает=) )
И еще не очень понятно, почему, например, в функции operator==( Array &arr ) можно свободно обращаться к private элементам объекта arr? (т.е. arr.column и arr.row)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru