Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/23: Рейтинг темы: голосов - 23, средняя оценка - 4.70
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

friend function C++ and operator ::

12.01.2020, 20:52. Показов 4920. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
привет

подскажите пожалуйста в чем ошибка? где не понимаю?

допустим есть класс
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
class foo{
public:
 
void vi();
 
 
private:
int a;
int b;
};
 
void foo::vi(){std::cout<< "hi";}//  тут foo::  я указываю принадлежность функции vi классу foo
 
 
это надо вообще делать или нет? 
 
если надо , то тогда здесь что ? 
 
 
class f{
 
int r;
int b;
 
friend void v(foo &a);
 
};
 
void foo::v(f& a){a.r=11;} // тут надо обозначать принадлежность классу? или уже то, что она описанна в классе f , этого достаточно?  если надо, то как правильно это сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2020, 20:52
Ответы с готовыми решениями:

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

Friend function
Нужно сделать функции Length и Angle френдовыми для другого класса. Как это запилить? Sect.h #include &lt;iostream&gt; #include...

25
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
14.01.2020, 15:43  [ТС]
Студворк — интернет-сервис помощи студентам
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
вот так 
 
#include <iostream>
 
class foo{
 
public:
 
void do(){}; // это просто пример.  хочу показать, что функция полность описана в классе.  она не будет глобальной. она функция-член. 
 
};
 
 
вот так
class foo{
public:
 
void do();// прототип. 
 
};
void foo::do(){}; // тут функция будет глобальной.  foo:: просто говорит , что она принадлежит классу foo. но foo:: не ограничивает область видимости. 
 
но метод ограничен классом.   тогда метод не может быть глобальным.  а если глобальный, то не метод. 
что не правильно?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
14.01.2020, 16:00
Цитата Сообщение от pcmax Посмотреть сообщение
но метод ограничен классом.   тогда метод не может быть глобальным.  а если глобальный, то не метод.
что не правильно?
Функция do - это не статическая функция-член класса foo.
То, что она определена вне класса в глобальном или другом скопе особой роли не играет.
Метод обозначается как foo::do и указывает, что функция do является членом класса foo и находится в области видимости класса foo.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
14.01.2020, 17:03  [ТС]
Цитата Сообщение от Azazel-San Посмотреть сообщение
и находится в области видимости класса foo.
то есть она не имеет глобальной видимости? я уточняю
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
14.01.2020, 17:14
Цитата Сообщение от pcmax Посмотреть сообщение
то есть она не имеет глобальной видимости?
Что значит не имеет глобальной видимости?
Ее видимость ограничивается видимостью класса в которой она была объявлена.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
14.01.2020, 17:31  [ТС]
да это я что-то понес)))))))))))))))) глобальная видимость!!!! признаться я сам диву дался теперь!!!!
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
14.01.2020, 18:04
Цитата Сообщение от pcmax Посмотреть сообщение
да это я что-то понес)))))))))))))))) глобальная видимость!!!! признаться я сам диву дался теперь!!!!
Все немного проще, можно об этой функции думать в таком контексте:
C++
1
2
3
4
5
6
7
namespace foo {
 
void do();
    
} // namespace foo
 
void foo::do() {}
Грубо говоря.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2020, 18:04

Friend Function - C++
мне нужно введенную строчку передать в библиотеку , танцевал с бубном со всех сторон может кто помоч? #ifndef LIBWORD_H ...

Friend Function
Я не очень понимаю как пользаватса Friend функцыей Class.h #include &lt;stdio.h&gt; #include &quot;iostream&quot; using namespace std; ...

friend function
Помогите плз разобраться: Когда я делаю инкремент &quot;х&quot; через закрытые функции класса - все работает нормально, а когда через...

friend function
После добавления дружественной ф-ции sum( а она для сложения salary у человека, которого я выберу) класс перестал работать. Что у меня не...

Virtual friend function
&lt;&lt;Виртуальный метод не может объявляться с модификатором static, но может быть объявлен как дружественная функция.&gt;&gt; Виртуальный...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент". В данной функции нет апострофов,. . .
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru