friend

Kiedy należy używać 'friend' w C++?

Czytałem C++ FAQ i byłem ciekawy friend deklaracja. Osobiście nigdy z niego nie korzystałem, jednak jestem zainteresowany p ... las. Jednak nie jestem pewien, jak to nie przerywa enkapsulacji. Kiedy te wyjątki mogą trzymać się ścisłości, która jest OOP?

funkcja wymiany znajomych publicznych

W pięknej odpowiedzi na copy-and-swap-idiom jest kawałek kodu, który potrzebuję pomocy: class dumb_array { public: // ... cić friend iter begin() i friend iter end() w ten sam sposób wewnątrz klasy? Myślę, że {[1] } nie jest tu potrzebny, prawda?

Dlaczego C# nie zawiera słowa kluczowego "przyjaciel" w stylu C++? [zamknięte]

zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi. ... eniu na dostęp internal członków, podczas gdy friend pozwala dać pewnej klasie pełny dostęp do dokładnie one other class)

clean C++ granul friend equivalent? (Odpowiedź: Idiom Adwokat-Klient)

Dlaczego C++ ma public członków, do których każdy może zadzwonić i friend deklaracje, które ujawniają wszystkie private Człon ... ej obraca się wokół forwarding Call boilerplate, że bardzo podobny "klucz" idiom uniknąć kosztem mniej bezpośredniej ochrony.

Dlaczego C++ nie pozwala na dziedziczenie przyjaźni?

Dlaczego przyjaźń nie jest przynajmniej opcjonalnie dziedziczona w C++? Rozumiem, że przechodniość i refleksyjność są zakaza ... kcja i ewolucja C++, które widziałem wystarczająco dużo ludzi tutaj polecam, aby uzyskać lepszy wgląd w tego typu pytania ...

Czy możemy zwiększyć możliwości ponownego wykorzystania tego wzorca ochrony dostępu zorientowanego na klucz?

Czy możemy zwiększyć re-usability dla tego wzorca ochrony dostępu zorientowanego na klucz : class SomeKey { friend cl ... oryginalną klasę (jeden atrapa parametru na metodę) (dyskusja poboczna rozwinięta w to pytanie , więc otwieram to pytanie.)

Dlaczego Klasa C++ friend potrzebuje deklaracji forward tylko w innych przestrzeniach nazw?

Załóżmy, że mam klasę F, która powinna być przyjazna klasom G (w globalnej przestrzeni nazw) i C (w przestrzeni nazw A). by ... ; }; int main() { F f; } Wydaje mi się to niespójne. Czy jest ku temu jakiś powód, czy tylko decyzja projektowa normy?

Friend declaration w C++ - różnica między publicznym a prywatnym

Ktoś mi powiedział, że jest różnica między ogłoszeniem klasy przyjaciół w publicznych lub prywatnych obszarach klasy, ale nie ... class B; }; I class A { private: //or nothing as the default is private friend class B; }; Jest jakaś różnica?

Co jest złego w uczynieniu testu jednostkowego przyjacielem klasy, którą testuje? [duplikat]

To pytanie ma już odpowiedź tutaj: Jak przetestować prywatną funkcję lub klasę, która ma prywatne metody ... y mi wyjaśnić te powody bardziej, abym mógł lepiej zrozumieć? Nie rozumiem po co używać przyjaciela testy jednostkowe są złe.

Friend scope w C++

Jeśli mam trzy klasy, A, B, C. A i B są przyjaciółmi (dwukierunkowo). Ponadto B I C są przyjaciółmi (dwukierunkowo). A ma wsk ... anych C przez wskaźnik? Dla wyjaśnienia: jest to czysto teoretyczne pytanie w języku C++, a nie pytanie o porady projektowe.

Jaki jest zakres funkcji inline friend?

Po przeszukaniu aroung SO, jedno pytanie nauczyło mnie, że leksykalny zakres funkcji inline friend to klasa, w której jest zd ... ::bar’ prog.cpp: In member function ‘void foo::bar::call_friend()’: prog.cpp:15: error: ‘baz’ was not declared in this scope

Czy wewnętrzne klasy w C++ są automatycznie znajomymi?

Jeśli zdefiniuję klasę wewnętrzną w C++, czy jest to automatycznie znajomy klasy, która ją zawiera? Na przykład, czy jest to ... C++ spec na ten temat, a jeśli ktoś może przytoczyć coś konkretnego, co powie, że jest LUB NIE JEST LEGALNE, byłoby świetnie.

Funkcja access friend zdefiniowana w klasie

Istnieje taki kod: #include <iostream> class A{ public: friend void fun(A a){std::cout << "Im here" <& ... ope //A::fun2(); error: 'fun2' is not a member of 'A' fun3(); // works ok } Jak uzyskać dostęp do funkcji fun2 ()?

friend declaration deklaruje funkcję nie-szablonową [duplikat]

To pytanie ma już odpowiedź tutaj: overloading friend operator 5 ... e<T> *e) { out << e->data; return out; } Czytałem gdzie indziej w Internecie, że umieszczenie pomiędzy

Uczynienie parametru szablonu przyjacielem?

Przykład: template<class T> class Base { public: Base(); friend class T; }; Teraz to nie działa... Jest na ... tutaj ) Wiem, że istnieją inne sposoby na zrobienie tego, ale teraz jestem ciekawa, czy naprawdę możesz zrobić coś takiego.

declare template friend function of template class

Mam szablon klasy Obj i szablon funkcji make_obj. Obj ma zdefiniowany pojedynczy konstruktor private, który odwołuje się do ... uje zrobić make_obj("hello"); dla przykładowych celów. Jak mogę zezwolić tylko make_obj na dostęp do kontenera wartości Obj?

Kiedy używać klasy friend w C++ [duplicate]

Możliwy duplikat:Kiedy należy używać 'friend' w C++? Odświeżałem mój C++ (jestem programistą Javy) i natknąłem się n ... a, która nie dodaje prawdziwej wartości, z wyjątkiem mylenia ludzi patrząc na Twój kod, dopóki nie zorientują się, co robisz?

Zezwalanie klasie "przyjaciel" na dostęp tylko do niektórych prywatnych członków

Załóżmy, że mam trzy klasy C++: FooA, FooB i FooC. FooA ma funkcję member o nazwie Hello, chcę wywołać tę funkcję w klasie F ... objA.Hello2() // compile error objA.Hello3() // compile error ojbA.m_iData = 0; // compile error } };