С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
motkin7899
0 / 0 / 0
Регистрация: 11.04.2015
Сообщений: 6
1

Вызвано исключение: нарушение доступа для чтения

02.11.2017, 22:10. Просмотров 834. Ответов 2
Метки нет (Все метки)

Пытался реализовать класс для работы с двумерными матрицами, которые хранятся в одномерных массивах.
Запнулся на моменте создания двумерного индексного доступа к одномерному массиву матрицы.
Т.е. у меня есть матрица MATRIX<int> TEST(3,3); и при вводе TEST[1][2]=2; программа должна производить запись двойки в элемент с индексом 5.
Код подкласса Index

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
class Index
{
    T*mass; 
    int ind, col;
    public:
        Index(T*_mass, int indn) :mass(_mass), ind(indn) {}
    T& operator[](int _col)
    {
        if (_col < 0 || _col >= ind)throw std::logic_error("Invalid position"); 
        return mass[ind*col +_col];
    }
    T operator[](int _col)const
    {
        if (_col < 0 || _col >= ind)throw std::logic_error("Invalid position");
        return mass[ind*col + _col];
    }
};
Index operator[] (int _row)
{
    if (_row<0 || _row >= row)  throw std::logic_error("Invalid position");
    return Index(mas, col);
}
Index operator[] (int _row)const
{
    if (_row<0 || _row >= row)throw std::logic_error("Invalid position");
    return Index(mas, col);
}


Компиляция программы с данным участком кода приводит к появлению такого исключения:
Вызвано исключение: нарушение доступа для чтения.
MATRIX<int>::Index::operator[](...) вернул 0xCCF6BF68.

Код всей программы добавлять не буду, т.к. она слишком большая и остальные модули работают штатно.
0
Миниатюры
Вызвано исключение: нарушение доступа для чтения  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2017, 22:10
Ответы с готовыми решениями:

Вызвано исключение: нарушение доступа для чтения
Всем привет! Пишу программу, которая должна записать в файл в первом столбике...

Вызвано необработанное исключение: нарушение доступа для чтения
Вызвано необработанное исключение: нарушение доступа для чтения. p-&gt;Left было...

Вызвано исключение: нарушение доступа для чтения. s было 0x1110112
Товарищи форумчане, нужна ваша помощь! (Для простоты объяснения прикреплю...

Вызвано исключение: нарушение доступа для чтения. Функции и двумерные массивы
Здравствуйте. В процессе выполнения несложного учебного задания столкнулся с...

Ошибка: Вызвано исключение: нарушение доступа для чтения. print было nullptr
Здравствуйте, практикуясь с задание по односвязному списку застрял на...

2
DobroAlex
Модератор
393 / 335 / 165
Регистрация: 30.04.2016
Сообщений: 1,720
Завершенные тесты: 3
02.11.2017, 22:18 2
Лучший ответ Сообщение было отмечено motkin7899 как решение

Решение

motkin7899,
C++
1
2
3
4
5
6
7
8
9
10
Index operator[] (int _row)
{
    if (_row<0 || _row >= row)  throw std::logic_error("Invalid position");
    return Index(mas, col);
}
Index operator[] (int _row)const
{
    if (_row<0 || _row >= row)throw std::logic_error("Invalid position");
    return Index(mas, col);
}
Эти две перегрузки вызывают вопросы. Какая между ними разница, кроме того, что вторая защищает содержимое this, и как понять, какая из них вызывается?
0
motkin7899
0 / 0 / 0
Регистрация: 11.04.2015
Сообщений: 6
02.11.2017, 22:34  [ТС] 3
Честно говоря я данный кусок я писал по примеру из методички и там две одинаковые перегрузки также вызывали вопросы.
Eсли убрать const перегрузку, то эффекта никакого не будет.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2017, 22:34

Вызвано исключение: нарушение доступа для записи
Не понимаю в чем проблема. Ошибку выводит на строке strcpy_s. Помогите...

Вызвано исключение: нарушение доступа для записи
Помогите пожалуйста решить эту проблему. Я просто не понимаю что эта ошибка...

Вызвано исключение: нарушение доступа для записи
При записи пункта назначения выводит ошибку: Вызвано исключение: нарушение...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru