Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 11.09.2018
Сообщений: 38

Добавить дружественную функцию в класс

02.10.2018, 14:19. Показов 1583. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть сделанный класс по условию: Создать класс "шар" по таким условиям:
а) его экземпляр содержит размер радиуса.
b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с
параметрами создает экземпляр с соответствующим значением радиуса.
c) его методы позволяют получать и присваивать значения радиуса и объема,
выполняя при этом соответствующие преобразования.



Помогите добавить дружественную функцию в код: дружественная функция frd в качестве параметров получает экземпляры двух шаров и возвращает новый шар, объем которого равен сумме объемов этих двух шаров

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
#include <iostream>
#define Pi 3,14
 
 
class Sphere{
public:
Sphere():r(0.0){}
Sphere(const double _r){
 
    r = _r;
    V = (4 * Pi * r * r) / 3;
}
void set_radius(const double _r){
     r = _r;
     V = (4 * Pi * r * r) / 3;
}
double set_capacity(const double _V){
     V = _V;
     return V;
}
double get_capacity(){
    return V;
}
private:
double r;
double V;
};
int main()
{
    Sphere s;
    s.set_radius(2.0);
    std::cout << s.get_capacity() << std::endl;
 
    Sphere s1(3.0);
    std::cout << s1.get_capacity() << std::endl;
    s1.set_capacity(3829);
    std::cout << s1.get_capacity() << std::endl;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2018, 14:19
Ответы с готовыми решениями:

Как добавить дружественную функцию в класс
Написал код, а как добавить функцию friend? #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; using namespace std; ...

Добавить дружественную функцию
Создать класс машина, имеющий марку (указатель на строку) , число цилиндров, мощность. Определить конструкторы, деструктор и функцию...

Добавить дружественную функцию в программу
Помогите переделать программу. Не могу добавить дружественную функцию. Задание. Создать два класса: целые(Integer) и матрица (int...

2
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
02.10.2018, 15:52
Лучший ответ Сообщение было отмечено Hi_tech_2018 как решение

Решение

Переменную V не стоит хранить.
Членами данными класса должны быть переменные, которые однозначно определяют объект.
Остальное должно вычисляться через методы класса.
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
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
class Sphere {
public:
    Sphere() :r(0.0) {}
    Sphere(const double _r) {
 
        r = _r;
    }
    void set_radius(const double _r) {
        r = _r;
    }
    double get_radius() {
        return r;
    }
    double get_capacity() {
        double V = (4. * M_PI * r * r * r) / 3.;
        return V;
    }
    void SetCapacity(double V)
    {
        r=pow(3.*V / (4.*M_PI), 1. / 3.);
    }
    friend Sphere frd(Sphere a, Sphere  b);
 
private:
    double r;
    //double V;
};
 
Sphere frd(Sphere a, Sphere  b)
{
    double V = a.get_capacity() + b.get_capacity();
    Sphere t;
    t.SetCapacity(V);
    return t;
}
 
int main()
{
    Sphere s;
    s.set_radius(2.0);
    std::cout << s.get_capacity() << std::endl;
 
    Sphere s1(3.0);
    std::cout << s1.get_capacity() << std::endl;
 
    Sphere s3 = frd(s, s1);
    std::cout << s3.get_radius()<<' '<<s3.get_capacity() << std::endl;
    system("pause");
    return 0;
}
Кстати, функцию frd не обязательно делать friend,
она не использует r напрямую.
0
0 / 0 / 0
Регистрация: 11.09.2018
Сообщений: 38
17.10.2018, 16:12  [ТС]
Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2018, 16:12
Помогаю со студенческими работами здесь

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию)
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс вещественных чисел (double).. Определить оператор +, как...

Создайте класс Date. Добавить в строковый класс функцию
3)Создайте класс Date, который будет содержать информацию о дате (день, месяц, год). С помощью механизма перегрузки операторов, определите...

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

Перенос кода в дружественную функцию
Нужно подсчитать количество слов в строке и сделать это через дружественную функцию. Не совсем понимаю как это реализовать. Изначально...

Передача параметров в дружественную функцию класса
Всем доброго времени суток. Читал про дружественные функции, в учебнике по которому учусь написано, что в дружественную функцию класса...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru