Описание тега friend-function

В C++ функция друга - это своего рода функция, которая является "другом" данного класса, и ему разрешен доступ к частным и защищенным данным в этом классе, что обычно невозможно, как если бы данные были общедоступными.
1 ответ

Мы можем определить функцию друга внутри класса в cpp

согласно правилу мы не можем определить функцию друга внутри класса для istream и ostream мы всегда объявляем функцию друга (так это правильно) в приведенном ниже коде Но проблема для 1-го пункта в том, как для данного кода может быть возможным успе…
03 апр '15 в 06:58
1 ответ

Функция друга шаблона шаблонного класса

Я боролся с проблемой, описанной в этом вопросе (объявление функции шаблона как друга класса шаблона), и я считаю, что 2-й ответ - это то, что я хочу сделать (объявить функцию шаблона вперед, а затем назвать специализацию другом). У меня есть вопрос…
24 ноя '09 в 00:57
2 ответа

C++ частичная шаблонная специализация оператора потока

У меня есть класс Matrix с функцией друга для использования с оператором<<. Все это прекрасно работает, но теперь я хочу частично специализировать эту функцию-друга для работы по-другому, если класс Matrix имеет Matrix в качестве параметра шаблона (…
2 ответа

Можно ли это сделать без помощи друзей?

Можно ли преобразовать следующий код (я сохранил только соответствующую часть) для использования статической функции-члена, а не функции, свободной от друзей? Если нет, то почему нет? Я пытался преобразовать его для использования статической функции…
17 апр '14 в 19:46
1 ответ

Доступ к функции-члену из объекта внутри функции-друга

Код ниже является частью класса Distance. Перегрузка оператора является функцией-другом, объявленной как закрытый член класса Distance, а функция, которую я пытаюсь вызвать, является открытой. Эта функция не изменяет переменные-члены класса Distance…
1 ответ

Перегрузка операторов сравнения для стеков

Мне нужна помощь: меня попросили перегрузить операторы сравнения 2 стеков. У меня есть синтаксис, я просто не могу написать определение. Поэтому, пожалуйста, помогите мне. Хотя бы одному оператору перегрузить и тогда я сделаю это для остальных. stru…
3 ответа

Перегрузка метода оператора друга в шаблонном классе

Я пытаюсь перегрузить оператор присваивания ('=') класса шаблона, но мне нужно operator= метод, чтобы быть функцией друга. Я думаю, что это будет просто, но я делаю что-то не так, потому что код ниже вызывает ошибку компиляции: ошибка C2801: операто…
4 ответа

Могут ли 2 класса совместно использовать функцию друга?

Сегодня у меня есть сомнения относительно функции друга. Могут ли два класса иметь одну и ту же функцию друга? Скажи пример friend void f1(); объявлено в классе A и классе B. Возможно ли это? Если да, может ли функция f1() получить доступ к членам д…
23 авг '13 в 13:38
0 ответов

Перегрузка оператора Derference

C++ Увидев, что оператор разыменования перегружен для целей, отличных от разыменования указателя на объект, я хочу проверить, как перегрузить оператор разыменования (в основном) с целью разыменования указателя на объект. Я хочу перегрузить оператор …
1 ответ

Создание экземпляра класса Friend в параметрах функции

Я новичок в работе с C++. Мне нужно объявить экземпляр класса в качестве параметра функции в другом классе, а экземпляр параметра объявлен как друг. Проиллюстрирую на примере. class foo(){ private: void a(){ // function definition } } class other_fo…
11 июн '15 в 04:04
1 ответ

Проблема с функцией друга

Поэтому моя программа состоит в том, что я хочу, чтобы пользователь вводил информацию о доске, чтобы все работало, кроме той части, где мне нужно, чтобы пользователь ввел значение отношения, затем добавьте еще одно число, чтобы увеличить это отношен…
29 мар '16 в 20:31
3 ответа

C++0x, пользовательские литералы с оператором друга ""()

Будет ли возможно и / или полезно определить operator "" (...) как функция друга? class Puzzle { friend Puzzle operator "" _puzzle(const char*, size_t); ... }; void solve(Puzzle); int main() { solve("oxo,xox"_puzzle); }; Я думаю о "полезном" особенн…
2 ответа

Запрограммируйте на С ++ 2 класса и найдите максимум 2 числа.

Я хочу найти максимум 2 числа, но вместо простого метода мне нужно использовать 2 класса и функции друзей. Как это реализовать? Я использую следующий код, но код не работает. #include&lt;iostream&gt; using namespace std; class one { int a; public: f…
08 сен '17 в 07:19
2 ответа

Clang/ G ++ разница с функцией друга

Почему код ниже хорошо скомпилирован в g ++, но выдает ошибку на clang? #include &lt;iostream&gt; class Object {}; class Print { public: template &lt;typename CharT&gt; inline friend std::basic_ostream&lt;CharT&gt; &amp; operator&lt;&lt;(std::basic_…
17 янв '15 в 19:42
3 ответа

Определение оператора << Внутри класса

Рассмотрим следующий код: class MyClass { template &lt;typename Datatype&gt; friend MyClass&amp; operator&lt;&lt;(MyClass&amp; MyClassReference, Datatype SomeData); // ... }; template &lt;typename Datatype&gt; MyClass&amp; operator&lt;&lt;(MyClass&a…
4 ответа

Друг против функций-членов в Перегрузке Оператора C++

Ранее я узнал о перегрузке операторов в C++ как функций-членов, а также функций-друзей класса. Хотя я знаю, как перегрузить операторы в C++, используя оба метода. Но я все еще смущен, что ** какой лучше **? Функция-член или функция-друг для перегруз…
29 мар '17 в 09:15
3 ответа

Что такое пространство имен определенной пользователем функции?

Если у меня есть функция, определенная как друг внутри класса. Каково пространство имен этой функции? namespace A{namespace B{ struct S{ friend void f(S const&amp;){}; }; }} int main(){ A::B::S s{}; f(s); // ok ::f(s); // not ok, no f in global name…
0 ответов

Как определить шаблонную функцию друга класса шаблона

У меня есть шаблон класса array_T который является массивом общего назначения и функцией шаблона linear search TEMPLATE.h и его объявили другом для класса arrayTemplate.h чтобы можно было использовать функцию-член класса getArraySize() и член класса…
06 янв '17 в 16:50
1 ответ

Ошибка компоновщика с шаблонной функцией-другом шаблонного класса при использовании независимого от шаблона enable_if

Я имею дело с шаблонным классом с функцией шаблонного друга template&lt;typename T&gt; struct X { template&lt;typename someX&gt; auto friend f (someX x) -&gt; std::enable_if_t&lt;std::is_same_v&lt;decltype(x.hidden), int&gt;, int&gt;; private: T hid…
13 фев '19 в 16:30
1 ответ

Шаблонная функция друга в обычном классе

Я думаю, что мне нужна функция друга шаблона в обычном классе. Эта функция будет выполнять некоторое сложное распределение в разделяемой памяти и некоторые другие операции с оборудованием и ОС. Но я исключил все это, чтобы показать, что проблема свя…
08 янв '13 в 01:36