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

Проблема с деструктором - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Код для ввода текста http://www.cyberforum.ru/cpp-beginners/thread15488.html
я новичок еще совсем, и наверное смешно, но не могу написать код для ввода текста в С++, говорят что надо цикл do...while? а как это напсиать я не представляю!!!
C++ вывод текста без использования библиотек? в общем вот такая вот задачка на Turbo C написать такую дрянь надо , блин говорят всего то строчки 3-4 ....вообще без использования любых библиотек сделать обычный вывод текста на экран ,типа printf ... но как это можно сделать ???? Пожалуйста кто знает подскажите .:help: http://www.cyberforum.ru/cpp-beginners/thread15486.html
Помогите с удалением строки матрицы C++
Доброго времени суток всем! Такая ситуация, что нужно удалить методом сдвига из матрицы строку, сумма элементов котороя равна 0. Я вот функцию обработки вроде как сделал, то вопрос в правильности ее работы. Посмотрите плиз и скажите что не правильно: -------------------------------- for(i=0;i<n;i++) for(j=0;j<m;j++) { while(j<m) summ=summ+a; if(summ==0) a=a;
C++ Вывести на экран значения матрицы, взятые по спирали по часовой стрелке
Мне очень нужно написать программу а я несовсем понимаю как((( Здача такая: Дана матрица N*M нужно вывести на экран значения матрицы взятые по спирали по часовой стрелке!!! Я не совсем понимаю как должна работать программа при разных N и M !!! Если не трудно напишите . Заранее благодарен!
C++ Используя препроцессор заменить некоторое выражение на другое http://www.cyberforum.ru/cpp-beginners/thread15471.html
Как можно используя препроцессор заменить некоторое выражение на другое даже если само выражение содержит спец. символы? Короче говоря, нужно сделать автоматически Replace All перед компиляцией.
C++ Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами Помогите написать прогу) 1. Строка состоит не менее чем из двух слов. Преобразовать её по следующему правилу: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами. Количество пробелов между словами должно остаться таким же, как и в исходной строке. Задачу решить без использования дополнительных строк.:help: подробнее

Показать сообщение отдельно
KRIK
0 / 0 / 0
Регистрация: 08.11.2008
Сообщений: 7
08.11.2008, 22:51     Проблема с деструктором
Помогите реализовать алгоритм:

Пусть имеется класс сотрудников примерно следующего вида:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Unit
{
   char name[20];
   Unit *Master;    // <-- указатель на начальника
public:
   Unit( char in_name[], &in_Master );
   //~Unit( );
};
 
Unit :: Unit ( char name[], &in_Master )
{
   strcpy_s( name, in_name );
   Master = in_Master;    
}
Создадим несколько сотрудников:
C++
1
2
3
4
5
6
7
Unit Vasya  ( "Вася",  0       )  // указатель нулевой, т.е. не имеет начальника
Unit Petya  ( "Петя",  &Vasya  )  // начальник - Vasya
Unit Emelya ( "Емеля", &Petya  )
Unit Oleg   ( "Олег",  &Emelya )
Unit Ignat  ( "Игнат", &Emelya )
Unit Anton  ( "Антон", &Emelya )
Unit Den ( "Денис", &Anton  )
Теперь необходимо написать такой деструктор, который при удалении некоторого сотрудника нашел бы всех его подчиненных и в их поле для начальника вместо указателя на удаляемого сотрудника разместил бы указатель на начальника удаляемого объекта.

Т.е., например, хотим удалить Емелю, видим, что у Емели три непосредственных подчиненных: Олег, Игнат и Антон.

Теперь вопрос, как обнаружит этих подчиненных деструктор?
Я думал реализовать это так: в классе задаем еще одно поле - массив указателей (чтобы не ограничивать количество возможных подчиненных, массив должен быть динамическим)
C++
1
Unit *Slave[];
тогда заведем какой-нибудь счетчик, и при выполнении конструктора при создании объекта по переданному указателю на Master будем переходить к начальнику и записывать Master -> Slave[i] = this ( но у нас динамич. массив, надо правильно выделять память оператором new и менять размер на счетчик + 1, у меня так и не получилось правильно написать).
Поэтому помогите, пожалуйста, с кодом конструктора
C++
1
2
3
4
5
6
7
8
9
10
id = 0; // можно в классе, можно глобальн.
 
Unit :: Unit ( char name[], &in_Master )
{
   strcpy_s( name, in_name );
   Master = in_Master;   
 
   id++;
   new Unit*[id] = ...... // ...... Master -> Slave[i] = this ....... особо проблемный кусок
}
и с кодом дестркутора
C++
1
2
3
4
5
Unit :: ~Unit ( )
{
   Slave -> Master = Master;   // подчиненным Емели в начальника ставим начальника самого Емели
   delete ...    // и надо бы теперь вроде удалить массив указателей на подчиненных того емели (*Slave[]), но как?
}
Спасибо, если кто осилил, буду рад помощи =))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru