| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > дружественные классы |
| Автор: zhenya1 30.9.2010, 19:00 | ||
Нужно разбить класс банк на 3 класса. Я уверен, что я это сделал не правильно(т.к. по моему, два дружесвенных дополнительных класса даже не задействованы). Как правильно исправить код?
|
| Автор: jonie 30.9.2010, 19:03 |
| тут вообще лажа написана. Строка 41-42 это для чего воообще? |
| Автор: vnf 30.9.2010, 19:09 |
| Исходный код (до переделки) покажите |
| Автор: zhenya1 30.9.2010, 21:02 | ||
вот исходный код.
|
| Автор: jonie 30.9.2010, 22:36 |
| zhenya1, ну все-равно в 20-21 строках написана лажа. Что вы в них делаете и ЗАЧЕМ? Я уж не говорю про то, что вы удаляете неверно данные (забываете про удаление "вложенных" массивов).. |
| Автор: kemiisto 30.9.2010, 22:38 |
У меня для Вас плохие новости. Не использовать в C++ std::string - это уже неправильно. |
| Автор: zhenya1 30.9.2010, 23:46 | ||||
Все, теперь удоляю верно, спасибо что заметили.
Я заполнял конструктор по умолчанию, хм..это не обязательно, согласен. Но проблема в том, что мне нужно разбить мой класс на 3 (предпологаю :один для name , другой для valu and salary и третий -с ам банк)
|
| Автор: vnf 1.10.2010, 18:33 | ||
вроде как компилиться |
| Автор: zhenya1 1.10.2010, 19:32 | ||
| Огромное Вам спасибо, Вы волшебник. Мне с кодом еще дня два разбираться, а то многое не уловил как Вы сделали. Задам пару вопросов: 1. Каким образом класс банк общается с другими классами. И почему не нужно предварительно обявлять другие классы и использовать в Bank friend классы. 2. Для чего это нужно? :
3. В классе Client name как стат. массив . В конструкторе вы каждый раз вводим имя, хм .. а где хранятся все именя? Как-то я не понимаю, вводим в массив ,а выводит как в массив строк. Объясните, как это все происходит. |
| Автор: vnf 1.10.2010, 20:39 |
| 1. friend объявляют в том случае если объекту одного класса требуется обращаться к закрытым членам объекта другого класса, в реальном коде такое встречается довольно редко. К открытым членам класса может обращаться кто угодно. В нашем случае объект класса банк Bank вызывает открытые члены-функции getSalary(...) и Show() объектов класса Client. 2. инкапсуляция, член salary закрытый, к нему нельзя обратиться из других классов, поэтому создаём открытый метод для получения значения этого члена 3. внутри объекта Bank храниться указатель на массив его клиентов Client * clients сам массив создается динамически clients = new Client[number_clients] каждый элемент массива хранит своё имя в своём члене name |
| Автор: zhenya1 2.10.2010, 14:29 | ||
Спасибо за разьяснения. Но вот еще одна проблемка:
Эту ф-цию мне в задании нужно сделать friend, почемуто. Возможно ли это? |
| Автор: vnf 3.10.2010, 17:04 | ||
friend по отношению к классу могут быть или другие классы или просто функции. Вообще по смыслу в этой задаче friend'ами делать нечего, но если надо по условиям задания можно притянуть за уши следующим образом:
|
| Автор: zhenya1 3.10.2010, 22:15 | ||
| int getSalary(Client & client, ... -- тут, как я понимаю амперсант это ссылка. Не могли бы Вы пояснить как она работает в данном случае? Я хочу сделать еще вот что: вводить имя, и если такое имеется , вывести всю информацию о нем. Но с помощью перегрузки оператора"<<".
Как правильно это сделать? |