4
голосов
1ответов
1082 просмотров

Friend class and all its descendants

suppose that I have a class A with several subclasses (B, C, and D). I need B C and D to access some protected members from a class E. Is it possible to make B, C and D friends of E in a single hit without having to list them all? I have tried with: class E { friend class A; ... }; ...

4
голосов
2ответов
1197 просмотров

XML Serialize Friend Classes in VB.net

I have a few classes (about 15 or so) in VB.net (2005) that I would like to be able to serialize to xml. Unfortunately they are labeled as friend classes and cannot be exposed outside of the assembly. The assembly is a dll that is a com interop plugin to a CAD system. I have set all of my classe...

10
голосов
2ответов
3164 просмотров

Template friendship

I'm trying to access protected variables of a template class with different template parameters. A friend declaration with template parameters is giving the following error: multiple template parameter lists are not allowed My code is template<class O_, class P_> class MyClass { //m...

3
голосов
4ответов
5388 просмотров

Friend functions

For the example under Friend Functions How is the following true? "Notice that neither in the declaration of duplicate() nor in its later use in main() have we considered duplicate a member of class CRectangle. It isn't! It simply has access to its private and protected members without being a m...

1
голосов
4ответов
155 просмотров

Help eliminating friends/internals

I often see people say things like "if you need friend/internal then your design is wrong", could someone tell me how to redesign the following code to eliminate the internal in ChessPiece.Location? It's currently used so that adding a piece to ChessBoard sets the ChessPiece.Location property to...

18
голосов
10ответов
8595 просмотров

Как ключевое слово friend (класс / функция) нарушает инкапсуляцию в C ++?

Один программист сказал, что «друг-функция нарушает инкапсуляцию в C ++». и один программист также сказал: «Дружественные функции не нарушают инкапсуляцию; вместо этого они естественным образом расширяют барьер инкапсуляции» что это значит? .. Если дружественная функция нарушает инкапсуляц...

6
голосов
2ответов
708 просмотров

Почему я не могу подружиться с параметром шаблона?

При поиске ответа на вопрос (на основе этот ответ ) Я попытался сделать следующее: template <class T> class friendly { friend class T; }; friendly<string> howdy; Не удается скомпилировать из-за следующей ошибки: ошибка: параметр шаблона "T" нельзя использовать в ...

13
голосов
3ответов
22546 просмотров

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

Как изменить следующий код, чтобы разрешить шаблонной функции ask_runUI() использовать s_EOF, не делая s_EOF общедоступным? #include <string> #include <iostream> #include <sstream> #include <vector> class AskBase { protected: std::string m_prompt; std::string m...

2
голосов
2ответов
4112 просмотров

Как получить доступ к частной переменной-члену класса данных из другого производного класса, родительский класс которого является дружественным классом класса данных?

У меня три класса: Класс держателя данных CDataHolder, использующий шаблон Pimpl класс CDataHolder { общественность: // ... частный: класс друзей CBase; struct PImpl; PImpl * iPimpl; }; Базовый класс CBase, которому требуется доступ к члену iPImpl в CDataHolder, поэтому он является...

2
голосов
2ответов
237 просмотров

Можно ли сузить дружеские отношения между классами и функциями, когда задействовано несколько типов шаблонов?

Предположим, я представляю класс изображения как: template <typename Pixel> class Image { ... }; Мне понадобится моя собственная функция подкачки, чтобы предотвратить дополнительное копирование изображений, поэтому мне нужно сделать ее другом Image. Если внутри изображения я пишу: ...

3
голосов
4ответов
1907 просмотров

Ограничьте наследование желаемым количеством классов во время компиляции

У нас есть ограничение, согласно которому класс не может выступать в качестве базового класса для более чем 7 классов. Есть ли способ применить указанное выше правило во время компиляции? Мне известно о методе Usable_Lock Эндрю Кенига, который предотвращает наследование класса, но он терпит н...

1
голосов
5ответов
3608 просмотров

класс / функция друга в c ++

Возможный дубликат: Когда следует использовать слово «друг» в C ++? Я вижу, что многие люди рекомендуют сделать функцию / класс другом другого класса здесь, в SO, хотя есть и другие альтернативы. Не следует ли экономно использовать friend в C ++? Я считаю, что необходимо рассмотр...

41
голосов
3ответов
10061 просмотров

Сделать параметр шаблона другом?

Пример: template<class T> class Base { public: Base(); friend class T; }; Теперь это не работает ... Есть ли способ сделать это? На самом деле я пытаюсь создать такой типичный герметик: class ClassSealer { private: friend class Sealed; ClassSealer() {} }; class S...

23
голосов
2ответов
14159 просмотров

ключ класса должен быть объявлен при объявлении друга

Компилятор g ++ жалуется на эту ошибку, когда я объявляю друга таким образом: friend MyClass; вместо friend class MyClass; Почему необходимо ключевое слово class ? (Компилятор Borland C ++, кстати, не требует этого.) Не мог ли компилятор просто найти MyClass в таблице символов ...

6
голосов
3ответов
3066 просмотров

Как выполнить модульное тестирование частных функций из отдельного проекта в VB .NET?

При разработке кода мне часто требуется модульное тестирование некоторых строительных блоков класса, даже если они обычно являются частными. Если мои модульные тесты находятся внутри проекта, я могу использовать «Friend», чтобы выполнить это, и при этом сохранить функции закрытыми для нормальног...

14
голосов
3ответов
2115 просмотров

Унаследована ли дружба в C ++?

Предположим, у меня есть класс Base: class Base { friend SomeOtherClass; }; И есть еще один (другой) класс, унаследованный от Base: class AnotherClass : public Base {} Дружба тоже передается по наследству?

3
голосов
8ответов
636 просмотров

Здорова ли дружба между сверстниками на языке C ++?

Хотя классовая дружба - одно из последних средств C ++, имеет ли этот шаблон смысл? class Peer { public: friend class Peer; void GetSecret(const Peer& other) { const std::string& secret = other.GiveSecret(); std::cout << secret << std::endl; ...

5
голосов
6ответов
3558 просмотров

В каких сценариях следует объявлять функцию-член другом?

В каких сценариях мы объявляем функцию-член как «дружественную функцию»? .. Какую конкретную цель выполняет «дружественная функция», которая противоречит одной из центральных концепций «инкапсуляции» ООП?

0
голосов
2ответов
1006 просмотров

MSBuild не может построить дружественные сборки C ++ / CLI

У меня есть Visual Studio 2008 SP1, два проекта C ++ / CLI, скажем proj1 и proj2. proj2 зависит от proj1, но странным образом (см. ниже). В Project Dependencies я указываю, что proj2 зависит от proj1. Также ссылки proj2 включают proj1. Тогда я хочу, чтобы proj1 был другом proj2, итак, как страни...

38
голосов
11ответов
25387 просмотров

Когда использовать класс друзей в C ++

Возможный дубликат: Когда следует использовать слово «друг» в C ++? Я осваивал свой C ++ (я разработчик Java) и наткнулся на ключевое слово friend class, о котором забыл на некоторое время. Это одна из тех функций, которые являются частью кухонной мойки, или есть веская причина д...

4
голосов
5ответов
14105 просмотров

класс друга: унаследованные классы тоже не друзья?

В C ++ у меня есть класс A, который дружит с классом B. Похоже, унаследованные классы B не являются друзьями класса A. Это ограничение C ++ или моя ошибка? Вот пример. При компиляции я получаю сообщение об ошибке в строке «return new Memento»: Memento :: Memento: невозможно получить ...

4
голосов
2ответов
5972 просмотров

Дружественные шаблонные функции (в нешаблонных классах), C ++

Если у меня есть класс, не являющийся шаблоном (т.е. "нормальный"), и я хочу иметь функцию друга шаблона, как мне написать его, не вызывая ошибки компилятора? Вот пример, иллюстрирующий то, что я пытаюсь сделать: template <class T> void bar(T* ptr); class MyClass // note that this isn...

23
голосов
7ответов
48239 просмотров

Что эквивалентно ключевому слову "друг" в C Sharp?

Что эквивалентно ключевому слову "друг" в C Sharp? Как использовать ключевое слово "внутреннее"? Я читал, что ключевое слово "internal" заменяет слово "friend" в C #. Я использую DLL в своем проекте C #, для которого у меня есть исходный код, но я не хочу изменять существующий код. Я ун...

18
голосов
5ответов
8645 просмотров

Область действия друга в C ++

Если у меня три класса, A, B, C. A и B - друзья (двунаправленно). Кроме того, B и C - друзья (двунаправленно). A имеет указатель на B, а B имеет указатель на C. Почему A не может получить доступ к личным данным C через указатель? Чтобы уточнить: это чисто теоретический вопрос по языку C ++, а...

20
голосов
3ответов
16218 просмотров

друг И встроенный метод, в чем смысл?

Я вижу в заголовке, что не сам писал следующее: class MonitorObjectString: public MonitorObject { // some other declarations friend inline bool operator==(MonitorObjectString& lhs, MonitorObjectString& rhs) { return(lhs.fVal==rhs.fVal); } Я не могу понять, почему этот метод ...

25
голосов
2ответов
55306 просмотров

Эквивалент «друзей» для Java?

здесь небольшая архитектурная проблема. В C ++ у нас есть понятие «друзья», когда такие классы друзей могут иметь доступ к закрытым членам. Итак, я хочу создать приложение Java и стараюсь придерживаться архитектуры MVC. У меня есть класс контроллера, который управляет связностью графов меж...

4
голосов
5ответов
600 просмотров

Когда разумно использовать дружбу в ООП?

Я просматриваю руководство http://www.cplusplus.com и наткнулся на этот раздел здесь: http://www.cplusplus.com/doc/tutorial/inheritance. html , посвященный теме дружественных функций и дружественных классов в C ++. У меня вопрос: когда при создании программы целесообразно использовать ...

35
голосов
4ответов
16868 просмотров

PHP-эквивалент друга или внутреннего

Есть ли в php эквиваленты «друг» или «внутренний»? Если нет, то есть ли какой-нибудь шаблон для достижения такого поведения? Изменить: Извините, но стандартный Php - это не то, что я ищу. Я ищу что-то похожее на то, что сделал манеж. У меня есть классы, которые выполняют системные вызовы...

17
голосов
5ответов
3283 просмотров

Использование "дружеских" -объявлений для модульного тестирования. Плохая идея?

[ Конечно, вопрос не ограничивается конкретной реализацией "друга", но не стесняйтесь указывать на особенности реализации, если это уместно ] Просматривая оставшиеся без ответов вопросы, я наткнулся на InternalsVisibleTo атрибут: Определяет типы, которые обычно виден только в теку...

3
голосов
7ответов
2283 просмотров

друг класса c ++

Я пытаюсь скомпилировать такой код: #include <iostream> using namespace std; class CPosition { private: int itsX,itsY; public: void Show(); void Set(int,int); }; void CPosition::Set(int a, int b) { itsX=a; itsY=b; } void CPosition::Show() { cout << "x:" ...