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

В объектно-ориентированном программировании друг относится к методу или классу, который имеет доступ к некоторым закрытым аспектам определенного класса.
2 ответа

C++ Поддерживающий добавление boost::ptr_map / boost::checked_delete завершается неудачно

Я хочу использовать boost::ptr_map внутри определенного класса, который хранит свои экземпляры. Однако, пожалуйста, рассмотрите следующий пример: #include <boost/checked_delete.hpp> #include <boost/ptr_container/ptr_map.hpp> class foo { …
15 июн '11 в 07:10
3 ответа

Оператор << для вложенного класса

Я пытаюсь перегрузить оператор << для вложенного класса ArticleIterator. // ... class ArticleContainer { public: class ArticleIterator { // ... friend ostream&amp; operator&lt;&lt;(ostream&amp; out, const ArticleIterator&amp; artit); }; // ... }; Ес…
25 окт '10 в 14:13
1 ответ

Указатель на функцию как функция друга

Я использую указатели на функции в классе, чтобы обеспечить расширяемую функциональность во время выполнения. У меня есть typedef'd подпись функции: typedef f32 generate_height(f32 x, f32 y); Теперь в классе я использую указатели на функции: class T…
06 авг '18 в 09:08
2 ответа

C++ - ошибка: "функция" не была объявлена ​​в этой области

У меня есть следующая проблема: ошибка: 'kleiner' не был объявлен в этой области. Мой профессор сказал мне, что мой код просто отлично работает для него. Все каталоги включены в параметры bulid (я использую Code::Blocks). Может кто-нибудь сказать, п…
25 июн '14 в 19:21
1 ответ

C++ Friend Функция не имеет доступа к закрытым членам

Поэтому я пытаюсь сделать игру в шахматы (немного сложным для меня), и я являюсь пнем для этой части.. Итак, я сделал объект-кусок, и идея в том, что в основном игровом коде у меня есть массив частей, и я передаю адрес массива функции "InitilisePiec…
14 окт '15 в 11:28
3 ответа

Создание неопределенного класса в качестве друга и определение его позже

Создание неизвестного друга template&lt;typename T&gt; class List { protected: class a { int x; int y; private: friend class b; // &lt;------------ Why this is not an error? }; template &lt;typename U &gt; class b { //If that is not a error this sho…
25 ноя '10 в 06:43
1 ответ

Использование безымянного пространства имен для переопределения класса друга в API и доступа к закрытым членам?

Я пытаюсь получить доступ к некоторым закрытым членам класса, который является частью API, который я не могу изменить. Листинг 1: api.h namespace api { class Bar; class Foo { public: const int&amp; getSecret() const { return secretValue; } private: …
08 ноя '14 в 08:31
4 ответа

Должна ли функция друга быть в одном файле?

Я на самом деле тестирую файл, и у меня возникает ситуация, когда мне нужно получить доступ к некоторым защищенным членам класса из main.cpp. Я пытался добавить, main() как друг, не получилось и узнал, что это не будет работать, поэтому я переместил…
2 ответа

Друг не может получить доступ к личным переменным?

class LongInt { friend ostream &amp; operator &lt;&lt;(ostream &amp; os, const LongInt &amp; integer); ... } ostream &amp; operator &lt;&lt;(ostream &amp; os, LontInt &amp; container) { os &lt;&lt; container.number.size(); //error here return os; } …
28 фев '14 в 04:13
1 ответ

Оборачивание обработчиков ресурсов с помощью bidi

Как я могу использовать друга и биди для переноса обработчиков ресурсов? Мне удалось получить oAuth для проверки подлинности маршрута: (defn auth-handler [request] (friend/authorize #{::user} {:status 200 :body "a secret"})) (def routes ["/" {true a…
08 мар '16 в 18:20
2 ответа

Реляционные операторы на шаблоне класса

Это не будет работать template&lt;typename T&gt; struct foo { T t; }; bool operator==(const foo &amp;lhs, const foo &amp;rhs) { //error, requires template arg return lhs.t == rhs.t; } Это правильный способ решить эту проблему? Я хочу определить такж…
10 июн '13 в 10:11
1 ответ

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

Проблема заключалась в том, чтобы получить доступ к закрытым переменным для вывода из двух разных классов, добавив функцию, являющуюся другом обоих классов. class Salesperson; class Sale { private: string date; double total; int SalespersonIdNum; pu…
24 май '18 в 20:05
2 ответа

Друг вызывает виртуальный приватный метод - что должно произойти

У меня была ситуация, когда я хотел, чтобы класс друга вызывал закрытый метод, затем я хотел сделать этот метод виртуальным, чтобы вместо него вызывался метод класса - тогда я, конечно, понял, что дружба не наследуется. Таким образом, у нас есть сит…
20 ноя '13 в 01:38
3 ответа

Дружба не передается по наследству - какие есть альтернативы?

Я написал / пишу фрагмент кода для анализа физики, первоначально для себя, который теперь, надеюсь, будет использоваться и расширяться небольшой группой физиков. Никто из нас не является гуру C++. Я собрал небольшую структуру, которая абстрагирует д…
05 июл '11 в 16:41
2 ответа

Эхо для печати по одному значению за раз

Я создал систему, в которой пользователь регистрируется на моем сайте, его данные заносятся в мою таблицу пользователей (SQL). Затем пользователь может искать других пользователей по имени пользователя. Затем они могут отправить пользователю запрос …
20 янв '13 в 16:39
1 ответ

Вызов функции шаблона друга без определения параметра в шаблоне класса

Я экспериментировал с вызовом шаблонной функции друга без параметра, который определен в шаблоне класса. Я не нашел решения именно для этого случая и решил свою проблему другим путем, но во время своих экспериментов я неожиданно нашел какой-то интер…
3 ответа

Параметр шаблона в друзья

В C++03 следующее недопустимо, хотя некоторые компиляторы поддерживают это. template &lt;class T&gt; class X { friend T; }; Это было узаконено в C++11? (Извините, я не успел прочитать черновик, просто надеясь, что кто-то это знает)
28 июн '11 в 16:44
2 ответа

Объявление друга для одного члена вместо целого класса?

Обычно в C++, когда класс A объявляет дружбу с классом B, класс B имеет полный доступ к закрытым членам класса A. Что мне нужно сделать, это позволить классу B получить доступ только к одному частному члену класса A и ничего больше. Есть ли способ д…
11 фев '13 в 22:33
1 ответ

Объявить функцию C другом класса и вернуть C перечислитель

Это очень похоже на этот вопрос, однако функция, которую я пытаюсь сделать другом, возвращает C перечислитель. Я не могу понять правильный синтаксис: #include &lt;iostream&gt; extern "C" { enum X {ONE}; int foo(); X bar(); } namespace a { class A { …
15 май '15 в 10:35
1 ответ

Класс друга по пространствам имен и различным файлам.H

Я пытаюсь сделать следующую компиляцию под VS 2008 SP1 C++ проект, но friend class заявление не имеет никакого эффекта. (См. Сообщение об ошибке в последнем фрагменте кода.) Что я делаю не так с friend определение? // EncryptionTypes.h file #pragma …