Форум программистов, компьютерный форум, киберфорум
Наши страницы

Проблема с выделением памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посоветуйте отличную книжку для новичка по изучению С++ http://www.cyberforum.ru/cpp-beginners/thread349144.html
Посоветуйте отличную книжку для новичка по изучению С++,который вообще не знаком с языком...
C++ Дерево поиска Дано дерево поиска, ключи которого – целые числа (положительные и отрицательные). Определить К-е «–»-е число, следующее за «+»-м числом при прямом просмотре дерева (TLR). У меня программа похоже... http://www.cyberforum.ru/cpp-beginners/thread349135.html
C++ Как корректно вручную ввести данные
Как реализовать ручной ввод в данной программе? (Задание: вставить заданный пользователем элемент Е до и после элемента с минимальным ключом в заданном пользователем односвязном списке.) #include...
C++ Вывод заданных чисел
Для вывода цифр 1,2,3 в различных комбинациях дана программа #include<iostream> #include<stdlib.h> using namespace std; int main () {setlocale(LC_ALL,"Rus"); for(int i=1;i<4;i++) for(int...
C++ Отсутствие совместимости. http://www.cyberforum.ru/cpp-beginners/thread349131.html
Дилема такова,что я не могу заметить ошибки именно в ходе решения(быть может со скобками переборщил),а точнее нахождения y1 и y2.Ответы должны быть аналогичными,заранее извиняюсь за отсутствие...
C++ С++ массив объектов Люди начался новый учебный год опять обращаюсь за помощью File Имя файла.размер. количество обращений. создать массив объектов.ввывести. создать список файлов .размер которых превышает заданный.... подробнее

Показать сообщение отдельно
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
07.09.2011, 23:18
у вас поле-член класса int* table, а в конструкторе вы объявляете локальный указатель int** table. В строке 25 компилятор оперирует с указателем int* table (поле-член класса), а не с локальным указателем int** table.
t0.table[i][j] некорректно по этой же причине (потому что table --- это int*).
Решение: сделать указатель-член класса типа int**, то есть int** table. И инициализацию делать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Table(int size){
        table = new int* [size];
        for (int i = 0; i < size; i++)
                table[i] = new int [size];
        }
 
    Table(const Table &t0){
        table = new int* [t0.size];   //выделение памяти для матрицы
        for (int i = 0; i < t0.size; i++)
                table[i] = new int [t0.size];
 
        for (int i = 0; i < t0.size; ++i)
            for (int j = 0; j < t0.size; ++j)
                table[i][j] = t0.table[i][j];      //строка 25
        }
В деструкторе код такой:
C++
1
2
3
4
5
~Table(){
        for (int i = 0; i < size; i++)
                delete[] table[i];                    //удаляем массивы int*-ов
                delete[] table;                       //удаляем массив int**-ов
        }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru