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

Перегрузка индексации - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сколько функций входит в состав модуля Math? http://www.cyberforum.ru/cpp-beginners/thread55911.html
Кто знает сколько функций входит в состав модуля Math
C++ Code::Blocks. "undefined reference to" Доброго времени суток! Это опять я :) Столкнулся со следующей проблемой. Есть 5 файлов: main.cpp --- здесь функция int main(), т.е. делаю build and run class1.h --- заголовочный файл для class CClass1{...}; class1.cpp --- соответствующий файл .cpp class2.h --- заголовочный файл для class CClass2{...}; class2.cpp --- соответствующий файл .cpp http://www.cyberforum.ru/cpp-beginners/thread55900.html
C++ Копирование файла
Делаю программку для копирование файла настроек оперы с\на разные операционые системы. Для копирование я узнаю имя пользователя для это я использую GetUserName(szUserName, &dwSize); У меня загвоздка вовремя копирование. Не могу составить с этими данными полный путь. Попытался так все компилируется но не работает #include <windows.h> #include <iostream> int main(int argc, char...
C++ [C/C++]Компилятор g++.Странности с true и false.Кто нибудь может прокомментировать/повторить это у себя?
Заметил такую странность: Это проходит компиляцию bool *b = false; А это нет bool *b = true; error: cannot convert ‘bool’ to ‘bool*’ in initialization Компилятор g++.Почему это вообще проходит компиляцию в каком либо виде?Я понимаю,это как-то связано с инициализацией указателя,а false типа трактуется как NULL?Хотелось бы знать,как точно это работает. У меня случайно сначала так вышло,но...
C++ стек со структурой http://www.cyberforum.ru/cpp-beginners/thread55836.html
Не могу найти ошибку. Что-то с добавлением элементов. При выводе выводится только последний(столько же раз сколько всего элементов) #include <iostream> #include <conio.h> using namespace std; struct stack { int *dat; stack *prev;
C++ Табулирование кусочно непрерывной функции. Помогите пожалуйста с решением задачи. Выводить по диагонали снизу вверх слева направо в формате f(x)=y через паузы по 5 секунд порциями по N значений (N задает пользователь).Найти и вывести количество пробных точек, которым соответствовало значение функции ниже среднего на исследуемом отрезке.Примечание: вычисление y(x) оформить в виде функции с одним аргументом. Вот функция... подробнее

Показать сообщение отдельно
amigo11
Сообщений: n/a
05.06.2013, 23:32     Перегрузка индексации
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Вот код из книги А. Голуба Правила программирования на C и C++.
Как раз таки реализация операции индексации для двумерного массива.
Подниму старую ветку (тут это не осуждается?)

Всем здравствуйте!
Безуспешно пытаюсь сделать шаблонным класс, приведённый CyBOSSeR, и не понимаю, что тут не не нравится компилятору (использую mingw + codeblocks под виндой).
Было бы интересно сделать класс двумерного (в перспективе - и более высокой размерности) массива для любого типа данных.

array.h : (ругань на строку 35)
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
template <class QType> class int_array
{
    template <class PType> class row
    {
        friend class int_array<PType>;
        PType *first_cell_in_row;
        row<PType>( int *p ) : first_cell_in_row(p) {}
    public:
        PType &operator[] ( int index );
    };
    int nrows;
    int ncols;
    int *the_array;
public:
    virtual
    ~int_array( void );
    int_array( int rows, int cols );
    row<QType> operator[] (int index);
};
 
template <class QType> int_array<QType>::int_array( int rows, int cols ) 
: nrows ( rows ), ncols ( cols ), the_array ( new int[rows * cols])
{}
 
template <class QType> int_array<QType>::~int_array( void )
{
    delete [] the_array;
}
 
template <class QType> inline int_array<QType>::row<QType> int_array<QType>::operator[]( int index )
{
    return row<QType>( the_array + (ncols * index) );
}
 
template <class QType> inline QType &int_array<QType>::row<QType>::operator[]( int index ) // Тут ошибка!
{
    return first_cell_in_row[ index ];
}
main.cpp :
C++
1
2
3
4
5
6
7
#include <iostream>
#include "array.h"
 
int main(){
    int_array<int> p(10,10);
    return 0;
}
Компилятор:
Error: specializing member 'int_array<QType>::row<QType>::operator[]' requires 'template<>' syntax
Гугление по "requires template<> syntax" ни на что внятное меня не натолкнуло, логически код вроде бы корректен, потому спрашиваю тут.
Подскажите, в чём же тут ошибка и как это можно обойти или исправить.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru