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

Переопределение operator [][] - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ MVS 2008 открытие проекта http://www.cyberforum.ru/cpp-beginners/thread411263.html
Ребят пытаюсь открыть MVS 2008 проект .sln подписан он Version (unrecognized version), при открытие выдает: The selected file is a solution file, but was created by a newer version of this application and cannot be opned. Раньше открывал, а сейчас после обновления исходников нехочет, почему неподскажите?
C++ объединения, онли теория есть у меня объединение union un23 { char a; float b; struct { int f; short c; }; double e; } un; http://www.cyberforum.ru/cpp-beginners/thread411249.html
C++ Function 'CharToOem' should have a prototype
#include <iostream.h> #include <conio.h> #include <windows.h> #include<iomanip.h> char NEWT; char*RUS(char*TEXT) { CharToOem(TEXT,NEWT); return NEWT;}
Гпрограмма C++
Как написать такую программу в графической оболочке #include <iostream> void main() { double n; std::cin>>n; std::cout<<sqrt(n); }
C++ Список списков) http://www.cyberforum.ru/cpp-beginners/thread411238.html
задача: В некотором институте приобретаемые компьютеры выделяются различным факультетам поочередно. В пределах факультетов имеются очереди из кафедр. Факультет, получивший компьютер, перемещается в конец очереди, а соответствующая кафедра исключается из факультетской очереди. Вновь организованные факультеты и кафедры занимают последние места в...
C++ Помогите найти ошибку или переписать программу! Здравствуйте! Никак не могу справиться с одной задачей. Я и несколько одногруппников "прокрутили в голове" саму задачу и все говорят, что по идее все должно выполняться. На практике - вообще ничего не происходит. Условие: Дана строка: фамилия, имя, отчество записаны через один пробел. Вывести слово, в котором букв "а" наибольшее количество. Мое решение: #include <iostream> using namespace... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
19.12.2011, 19:29     Переопределение operator [][]
Цитата Сообщение от Jupiter Посмотреть сообщение
по другому ни как
Если нельзя, но очень хочется - значит можно!
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <cassert>
    
class Matrix {
    class Row {
        int * arr;
        int siz;
        Row(const Row & another);
        Row& operator = (const Row & another);
    public:
        Row(int size) : siz(size) {
            arr = new int [ siz ];
        }
        int& operator [] (int pos) {
            assert( pos > -1 && pos < siz );
            return arr[pos];
        }
        ~Row() {
            delete [] arr;
        }
    };
    Row ** matr;
    int rows;
    int columns;
 
    Matrix(const Matrix & another);
    Matrix& operator = (const Matrix & another);
    
public:
    Matrix(int r, int c) : rows(r), columns(c) {
        assert( rows > 0 && columns > 0 );
        
        matr = new Row* [ rows ];
        for ( int i = 0; i < rows; ++i )
            matr[i] = new Row(columns);
    }
    Row & operator [] (int pos) {
        assert( pos > -1 && pos < rows);
        
        return *(matr[pos]);
    }
    ~Matrix() {
        for ( int i = 0; i < rows; ++i )
            delete matr[i];
        delete [] matr;
    }
};
 
 
int main(){
    Matrix m(2, 2);
    m[0][0] = 13;
    m[1][1] = 69;
    
    std::cout << m[0][0] << " " << m[1][1] << std::endl;
    
    return 0;
}
На самом деле так, конечно, лучше не делать (вернее этого мало, всё должно быть чуть сложнее). Честно говоря, сам не верил, что отработает...
Код
andrew@rd-andrew ~/cpp/classes
$ g++ -o simple_matrix simple_matrix.cpp

andrew@rd-andrew ~/cpp/classes
$ ./simple_matrix
13 69

Не по теме:

Цитата Сообщение от Bers Посмотреть сообщение
будит легко
Легко не будет! Снова карточки давать за безграмотность?

 
Текущее время: 10:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru