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

Копирование контейнера vector в конструкторе (STL) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Изменить программу для типа unsigned char http://www.cyberforum.ru/cpp-beginners/thread790829.html
Подскажите пожалуйста, что нужно изменить в программе перевода числа, чтобы она правильно работала для введенного числа типа unsigned char,а не int. Когда меняю типы, программа выдаёт один и тот же неправильный результат для любого введенного числа... #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <math.h> void dvoich(int x) { int i, b; long...
C++ Error LNK2001: неразрешенный внешний символ Учусь по Страуструпу, решаю задание, нужно создать header файл и два cpp и заставить работать сообща. Почему-то VS12 матерится на использование переменной. Таких тем в интернете множество, но всюду компилятор матерится на ссылку на функцию, которая нигде не определена. У меня ссылка на переменную. Если пытаюсь переменную определить в хедэр файле, мне не дает ее изменить в cpp. Подскажите, что... http://www.cyberforum.ru/cpp-beginners/thread790828.html
про kernel32.dll C++
Доброго времени суток. Такой вопрос: Если прогой написаной на с++ создать в файле kernel32.dll поток то ето не повлияет на его работу? .Я сделал копию этого файла на рабочем столе. Предполагается что в потоке будут сотни гигов инфы %-) Заранее благодарен :)
Ограничение длины вводимых символов C++
Ребят помогите пожалуйста ограничить длину вводимых символов, а именно чисел через cin.getline вот код: #include <iostream> using namespace std; int main () { setlocale(0, "rus"); double A, Z, U; cout<< "Введите значение числа A\n"; while (!(cin>>A) || cin.get()!='\n')
C++ Исключения для формулы http://www.cyberforum.ru/cpp-beginners/thread790791.html
Рассчитать значение функции в заданной с консоли точке с учётом возможных ошибок её вы-числения. Учесть, что функция может иметь деление на аргумент или вычисление квадратного корня, поэтому, при вычислении значения функции может возникнуть исключение. Аргумент функции вво-дится с консоли, а рассчитанное значение функции также выводится на консоль. При вводе значения аргумента следует учесть, что...
C++ Нарисовать тучу, закрывающую солнце. Когда туча наполовину закрывает солнце, начинается дождь Нарисовать тучу, закрывающую солнце. Когда туча наполовину закрывает солнце, начинается дождь. подробнее

Показать сообщение отдельно
ITcrusader
Эксперт C++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
20.02.2013, 16:16     Копирование контейнера vector в конструкторе (STL)
Если я понял правильно, то вот в чем проблема:

по завершении этой строки:
Цитата Сообщение от Magister Посмотреть сообщение
weekday[i] = new Schedule(); //cannot copy vector to weekday here
weekday[i] содержит нормальный day, но всякую ерунду в studies.

А вот он источник бед: ты создаешь объект Lesson в конструкторе и инициализируешь его. И вроде бы все нормально. Потом указатель на подготовленный объект ты пихаешь в studies:
C++
1
this->studies.push_back(newLesson);
И тут тоже вроде все нормально, он там появляется. НО studies содержит копию указателя на созданный объект Lesson. Т.е. теперь у тебя есть динамический объект и 2 указателя на него, по одному из которых ты удаляешь память по завершении конструктора:
C++
1
delete newLesson;
Получается, что не существует более твоего Lesson, который ты сформировал в конструкторе, а вектор studies теперь содержит указатель на мусор. Источник зол - семантика копирования, реализуемая контейнерами STL.

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