Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219

Дружественная функция. Класс Passport

18.05.2014, 12:46. Показов 1649. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать класс Passport со следующими полями:
-номер паспорта
-фамилия (указатель на строку)

Конструктор должен выделять память под строку, ориентируясь на длину введеной (переданной строки)

Методы записи и считывания надо организовать в 2х версиях :
- обычный public метод
- дружественная функция (объект принимается по ссылке)

Задание:
Создать 2 объекта
- для первого объекта использовать обычные методы
- для второго объекта использовать дружественную функцию

наработок нет...
в указателях не разбираюсь...
прошу помощи
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2014, 12:46
Ответы с готовыми решениями:

Функция, дружественная классу, вложенному в шаблонный класс, или как написать итератор.
Здравствуйте! Пишу аналог STL vector. Возникают следующие ошибки: source.cpp:11: error: expected initializer before ‘operator’ ...

Класс "Человек" + дружественная функция сравнения по возрасту
Создать класс человек и к нему дружественную функцию сравнения по возрасту (сравнение 2-х человек) class Human { private: ...

как сделать чтобы дружественная функция классу принимал ааргумент типа "класс" который при создании ничем не инициализирован?
Друзья! Вот код, компилятор ругается на строку ff (f3); В общем переменную f3 необходимо объявлять без параметров, а потом передавать её...

6
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.05.2014, 13:01
Цитата Сообщение от Fakeoke Посмотреть сообщение
наработок нет...
Начинайте создавать. Хотя бы по первому абзацу.
0
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
19.05.2014, 15:14  [ТС]
ну пусть что-то такое будет...
на компиляторе не проверял
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Passport
{
private:
int Number;
char *Fam;
 
friend setNumber(int, Passport &);
friend setFam(*char, Passport &);
public:
void setNumber();
void setFam();
void show();
};
void Passport::setNumber (int N);
{
Number = N;
}
void Passport::setFam (*str);
{
Fam = Str;
}
void Passport::show();
{
cout << Number << " " << Fam;
}
 
void setNumber (int N,Passport & p2);
{p2.Number = N};
 
void setFam (char *str,Passport &p2);
{p2.Fam = str};
 
int main()
{ Passport p1,p2;
p1.setNumber(100);
p1.setFam("Fam1");
p1.show();
 
setNumber(101,p2);
setFam("Fam2",p2);
show();
 
getch();
}
0
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
22.05.2014, 19:30  [ТС]
аппп
тут работы то на 2 минуты, помогите незнающему
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.05.2014, 21:50
Лучший ответ Сообщение было отмечено Fakeoke как решение

Решение

C++
1
friend setFam(char*, Passport &);
И я бы сделал объект на первом месте, т.е.
C++
1
friend void setFam(Passport &, const char*);
Теперь реализация:
C++
1
2
3
4
5
6
7
void setFam(Passport & p, const char* f)
{
   char* newf = new char[strlen(f)+1];
   strcpy( newf, f );
   delete [] p.Fam;
   p.Fam = newf;
}
Аналогично под функцию-член. Потом можно выделить общую часть для конструктора и функции установки фамилии чтобы избежать дублирования кода.
0
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
22.05.2014, 22:51  [ТС]
C++
1
2
delete [] p.Fam;
   p.Fam = newf;
сначала удалили, а потом как-то в нее установили?

может надо было так?
C++
1
2
 p.Fam = newf;
delete [] newf;
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.05.2014, 23:11
Цитата Сообщение от Fakeoke Посмотреть сообщение
сначала удалили, а потом как-то в нее установили?
Удалили память, на которую указывал p.Fam, потом присвоили этому указателю адрес новой памяти.
При знаке = происходит копирование только адреса (значение указателя) в данном случае. Поэтому, если сделать как Вы предлагаете, p.Fam потом будет указывать на освобожденную память. А это в свою очередь ошибочно (если попытаться потом ее использовать).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2014, 23:11
Помогаю со студенческими работами здесь

Дружественная функция
Здравствуйте. Написал программу, которая должна матрицу умножать на число, но я не понимаю как вызвать дружественную функцию... Помогите...

Дружественная функция
описать классы автомобиль и маршрут. Использовать дружественную функцию определить количество потраченного топлива и время на преодоление...

Дружественная функция
У меня есть класс, подсчитывающий количество равносторонних треугольников в заданном множестве точек на плоскости. Подскажите,...

Дружественная функция
Хочу сделать вычисление площади как дружественную функцию, начал описывать, дальше догнать не могу как кодить. Подскажите? #include...

Дружественная функция
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; class massiv { int len,*p_mas; public : massiv() {} massiv...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru