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

Как организовать добавление в один класс элементов другого в ходе работы программы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массив указателей на классы http://www.cyberforum.ru/cpp-beginners/thread690907.html
Помогите, пожалуйста, понять ситуацию: enum COLOR {RED, GREEN, BLUE}; class Shape { protected: int m_x, m_y; COLOR m_color; public:
C++ Алогритм быстрого добавления в список, с сортировкой по возрастанию Написал алгоритм добавления элементов в множество, реализованное как связанные списки структур //Объявление структур struct List { string data; List*next; }; struct SetList { http://www.cyberforum.ru/cpp-beginners/thread690905.html
C++ В квадратной матрице найти максимальный среди элементов, лежащих ниже побочной диагонали.
В квадратной матрице найти максимальный среди элементов, лежащих ниже побочной диагонали.
Вывод списка файлов в нескольких столбцах (По аналогии с командной dir с ключом /D) C++
Здесь вывод в 1 столбец, нужно сделать в несколько. #include <windows.h> #include <iostream> using namespace std; int main() { int a=0; WIN32_FIND_DATA fd; // находим первый файл
C++ Найти первые три максимальных эллемента http://www.cyberforum.ru/cpp-beginners/thread690874.html
С задачей справился, но , есть косяки, например: - Если имеется дек с числами 1 3 9 0 9 5, max1 будет равен 9, max2 = 5, max3 = 3. Хотелось бы, чтоб max2 был равен 9, а max3 соответственно 5. - Еще не мало важный косяк, приходится бегать три раза по деку, за первый проход, я нахожу только первый максимальный, за второй проход второй максимальный и тп. Если возможно, предложите кто нибудь...
C++ Вычислить и вывести на экран в виде таблицы значения функции заданной ряда Тейлора Помогите написать код, вроде написала, но не работает формула - http://s56.***********/i152/1211/5c/fa5654d888bb.jpg #include <iostream> #include <iomanip> #include <cmath> #include <conio.h> #include <windows.h> using namespace std; подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.11.2012, 13:09     Как организовать добавление в один класс элементов другого в ходе работы программы
Levenyatko, начнём с того, что вы нигде не выделяете память под ListCountries, а сразу используете его как массив. Это ошибка. Далее, если принять за данность, что ListCountries - динамический массив (память под него выделена), то запись
C++
1
ListCountries = new Country;
приведёт к тому, что старая память потеряется и указатель станет указывать на один единственный элемент - страну. Я бы посоветовал хранить динамический массив указателей на страны. Тогда указатель надо объявить как
C++
1
Country **ListCountries;
, память под него выделять как
C++
1
ListCountries = new Country *[countries_count];
, а добавлять в него страну как
C++
1
ListCountries[idx] = new Country(<parameters>);
При этом не стоит забывать о возможности выхода за границы этого массива, и либо просто не давать добавить страну, либо расширять массив (путём выделения нового массива большего размера и копирования всех старых указателей в него, а затем удаления старого массива). А лучше, конечно, воспользоваться std::vector (или даже std::list). И главное, не забудьте правильно очистить массив в деструкторе так:
C++
1
2
3
4
for (int i = 0; i < countries_count; ++i)
    delete ListCountries[i];
 
delete [] ListCountries;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru