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

Возможно ли для класса сделать оператор "[][]"? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как проверить нажатие "Enter" http://www.cyberforum.ru/cpp-beginners/thread1099622.html
Пользователь вводит поочередно значения какие то, хочу что бы при нажатии "Enter" цикл вырубался и программа работала дальше. Получить VK_RETURN через windows.h не получится, тк пишу на xcode(mac). как подключить библиотеку не нашел, да и думаю есть способы полегче. getchar не получается, тк пользователь может ввести ansii значение этого символа цифрами и программа остановится(как я понимаю)....
C++ Страуструп - принципы и практика программирования. Ошибки компиляции При компиляции примеров из книги, 12 главы (графика), получаю ошибки: Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ "protected: void __thiscall Fl_Image::draw_empty(int,int)" (?draw_empty@Fl_Image@@IAEXHH@Z) в функции "public: virtual void __thiscall Graph_lib::Bad_image::draw(int,int,int,int,int,int)"... http://www.cyberforum.ru/cpp-beginners/thread1099620.html
C++ Знакомство с указателями. Синтаксическая ошибка.
Доброго дня! В качестве учебного пособия использую "С++ для чайников" Тема: первое знакомство с указателями С++, ст.89 //Layout - эта программа призвана дать читателю представление о расположении переменных в памяти #include<stdio.h> #include<iostream> using namespace std; int main(int arc, char*pszArgs)
Задать случайно массив, выводить является ли сумма делимой на 2 без остатка C++
помогите решить задачи в с++ 1) задать случайно массив от -20 до 50 с шагом 0.5, выводить является ли сумма делимой на 2 без остатка. 2)создать функцию, в качестве параметра получает массив и количество его элементов, возвращает массив, упорядоченный по возрастанию.
C++ Циклический сдвиг элементов квадратной матрицы http://www.cyberforum.ru/cpp-beginners/thread1099602.html
Осуществить циклический сдвиг элементов квадратной матрицы размерности MхN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него в последнюю строку справа налево, из нее в первый столбец снизу вверх, из него в первую строку. для остальных элементов аналогично.
C++ Программа вроде компилируется,но значения не выводит Помогите пожалуйста!!Очень срочно.Программа вроде компилируется,но значения не выводит.В чем проблема? // 11.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <math.h> #include "matrix.h" #include <fstream> подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
18.02.2014, 17:01     Возможно ли для класса сделать оператор "[][]"?
Пример не практический, потому что дублирует доступ к простому массиву, но как иллюстрация должен быть вполне очевиден.
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
class MyClass {
public:
    class Indexer {  // Сам индексатор, отвечающий за вторые скобки
    public:
        Indexer(MyClass& mc_, size_t index1_):
            mc(mc_),  // Запоминаем в индексаторе ссылку на родительский объект
            index1(index1_)  // и номер строки
        {}
         int& operator [] (size_t index2) {return mc.data[index1][index2];}
    private:
        MyClass& mc;
        const size_t index1;
    };
    friend class Indexer;   // Дадим ему доступ к внутренностям MyClass
 
    Indexer operator [] (size_t index1) {return Indexer(*this, index1);}  // Первые скобки
 
private:
    int data[20][20];
};
 
int main()
{
    MyClass x;
    x[3][4] = 5;  // Всю "шелуху" выкинет оптимизатор и эта операция будет скомпилирована в эквивалент x.data[3][4] = 5;
}
 
Текущее время: 14:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru