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

Не могу создать ссылку на объект в массиве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Dev C++ выдает ошибку http://www.cyberforum.ru/cpp-beginners/thread930151.html
// // Программа для преобразования // градусов Цельсия в градусы Фаренгейта:: // Fahrenheit = NCelsius * (212 - 32) /100 + 32 // #include <stdio.h> #inclade <iostream.h> int main (int nNumberofArgs, char* pszArgs ) { // Введите температуру в градусах Цельсия
C++ функция abort() тестирую сигнал SIGABRT который генерируется функцией abort() функция abort() дает сбой debug error! см. вложение. среда MVStudio 2008 как вылечить?? спасибо. #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread930143.html
Осмысление указателей C++
Пожалуйста расскажите более популярным языком что это такое и для чего они нужны. Перечитал несколько раз пару дополнительных источников - не могу понять как они эффективно реализуются на деле..
C++ Не могу понять задание по "ООП"
Добрый вечер! Задание вообщем не сложное и в реализации проблем не ощущаю, но никак не могу разобрать один момент: "Описать абстрактный класс, описывающий четырехугольник. Сделать в нем метод, определяющий площадь. Описать конструкторы, селекторы и модификаторы. Создать два класса-наследника: для квадратов и для трапеций. " "два класса-наследника: для квадратов и для трапеций" - они...
C++ ms dos http://www.cyberforum.ru/cpp-beginners/thread930130.html
Доброго времени суток. Только сегодня начала читать С++ для чайников и тут же встала проблема-не могу поставить Ms Dos. Вот что пишет: MS DOS - Популярнейшая операционная система прошлого века ;-) Это самая последняя 16 битная версия MS - DOS. Для установки потребуется 3 дискеты. Скопируйте файл dos622.exe в любой каталог и запустите. Затем последовательно запускайте файлы: Dos622_1.bat,...
C++ Инициализация std::tuple переменным числом аргументов Добрый вечер. Мне нужно инициализировать объект std::tuple, который является членом некоторого другого шаблонного класса с переменным числом аргументов. Есть такой код, который, естественно, не компилируется: template<typename...Arg> struct Base { Base() : NumElems(sizeof...(Arg)), mems(std::make_tuple(Arg...)){}//std::make_tuple(Arg...) - это то, что мне хотелось бы получить в... подробнее

Показать сообщение отдельно
Kuzia domovenok
1887 / 1742 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
30.07.2013, 23:21     Не могу создать ссылку на объект в массиве
Цитата Сообщение от SkaN2412 Посмотреть сообщение
matrix[i] = *(new Row(w));
1)утечка
2) создание одного ряда размером w

Добавлено через 5 минут
Решение:
1) Навести порядок в классе Row - определить конструктор копирования и оператор = по-нормальному, чтоб утечек не было!
Ибо http://ru.wikipedia.org/wiki/%D0%9F%...BD%D0%B8%D0%B5)
2) Конструктор матрицы будет выглядеть так:
C++
1
2
3
4
5
6
Matrix::Matrix( int h, int w ): width(w){
  Row element(h);
  matrix = new Row[w];
  for (int i=0; i<w; i++)
    matrix[i]=element;
}
Добавлено через 3 минуты
Цитата Сообщение от SkaN2412 Посмотреть сообщение
Row(){}
тоже безобразие. В конструкторе по-умолчанию ничего плохого нет, наоборот, хорошо, что имеется.
Но он ничего не инициализирует, а объекты, созданные с его помощью, будут деинициализироваться деструктором
C++
1
2
3
~Row(){
        delete []arr;
    }
И попытка delete[] для неинициализированного указателя будет плачевна.
 
Текущее время: 23:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru