<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301528</guid>
        <pubDate>Wed, 18 Feb 2004 16:31:00 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301528</link>
        <description><![CDATA[Flex_Ferrum: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Sazabis</strong>, 18.02.04, 19:27<br>
но это уже не решение, а изменение </div></div><br>
Вот вот. А изначально задача ставилась как &quot;открыть доступ к заданным членам заданному классу&quot;.]]></description>
        <author>Flex_Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301526</guid>
        <pubDate>Wed, 18 Feb 2004 16:27:10 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301526</link>
        <description><![CDATA[Sazabis: самое простое &#33;? в TO иметь pC2 зафрендить ему T2. А T1 унаследовать от T0.<br><br>Или вообще T2 унаследовать от T0, раз это общая часть ? ( но это уже не решение, а изменение )]]></description>
        <author>Sazabis</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301484</guid>
        <pubDate>Wed, 18 Feb 2004 15:02:32 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301484</link>
        <description><![CDATA[Flex_Ferrum: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Flip</strong>, 18.02.04, 18:00<br>
А если будет написанно так?</div></div><br>
Против лома нет приема. Обмануть и обойти все можно. Точно также в твоем случае можно залезть в заголовок и подправить список дружественных методов. <br>
Предложенный способ достаточно прост в использовании. Но рассчитан на честность программиста.]]></description>
        <author>Flex_Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301481</guid>
        <pubDate>Wed, 18 Feb 2004 15:00:05 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301481</link>
        <description><![CDATA[Flip: <strong class='tag-b'>Flex_Ferrum</strong><br>
А если будет написанно так?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">void C3::Foo(C1* ptr)</div><div class="code_line">{</div><div class="code_line">&nbsp;ptr-&#62;GetAccess((C2*)NULL).GetC1();</div><div class="code_line">&nbsp;ptr-&#62;GetAccess((C2*)NULL).GetC2();</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Flip</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301443</guid>
        <pubDate>Wed, 18 Feb 2004 14:27:48 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301443</link>
        <description><![CDATA[Flex_Ferrum: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Budda</strong>, 18.02.04, 17:24<br>
Эх нужно тестить, абстрактно догнать не могу....</div></div><br>
Попробуй.]]></description>
        <author>Flex_Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301439</guid>
        <pubDate>Wed, 18 Feb 2004 14:24:34 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301439</link>
        <description><![CDATA[Budda: Эх нужно тестить, абстрактно догнать не могу.... :(]]></description>
        <author>Budda</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301419</guid>
        <pubDate>Wed, 18 Feb 2004 13:53:54 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301419</link>
        <description><![CDATA[Flex_Ferrum: В С++ существует такая вещь - специализация шаблонов. Используется тогда, когда для конкретного типа шаблон должен вести себя особым образом. В приведенном примере у нас получается следующее. Общая специализация:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Budda</strong>, 18.02.04, 16:46<br>
 template&lt;class T&gt; class Accessor_t <br>
 {<br>
  Accessor_t(C1* parent) {;};<br>
 };</div></div><br>
Не содержит никаких методов доступа. Таким образом, когда мы будем инстанцировать этот шаблон - ни к какому методу мы обратиться не сможем (по причине их отсутствия).<br>
Теперь делаем взмах руками над клавиатурой и...<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Budda</strong>, 18.02.04, 16:46<br>
 template&lt;&gt; class Accessor_t&lt;C2*&gt; : public BaseAccessor<br>
 {<br>
 public:<br>
  Accessor_t(C1* parent) : BaseAccessor(parent) {;}<br>
 };</div></div><br>
Получаем, что если мы будем инстанцировать шаблон Accessor_t для типа C2*, то получим доступ к методам, объявленным в классе BaseAccessors. Т. е. объекты<br>
Accessor_t&lt;C2*&gt; c2_accessor();<br>
и<br>
Accessor_t&lt;C3*&gt; c3_accessor();<br>
будут вести себя по-разному и будут содержать разные методы.<br>
Теперь мы еще немножко напрягаем компилятор, и делаем так, что он сам выбирает для нас нужную специализацию:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;// Метод, возвращающий объект, через который будем получать доступ.</div><div class="code_line">&nbsp;template&#60;class T&#62; Accessor_t&#60;T*&#62; GetAccess(T* obj)</div><div class="code_line">&nbsp;{</div><div class="code_line">&nbsp;&nbsp;return Accessor_t&#60;T*&#62;(this);</div><div class="code_line">&nbsp;}</div></ol></div></div></div></div><br>
используя факт того, что шаблонные методы могут инстанцироваться неявно. В итоге мы можем использовать все это описанным мною способом:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">void C2::Foo(C1* ptr)</div><div class="code_line">{</div><div class="code_line">&nbsp;ptr-&#62;GetAccess(this).GetC1();</div><div class="code_line">&nbsp;ptr-&#62;GetAccess(this).GetC2();</div><div class="code_line">}</div></ol></div></div></div></div><br>
При этом доступом управляет сам класс C1, и на этапе компиляции мы получаем жесткий контроль - классы, которым &quot;не положено&quot; доступа не получат.]]></description>
        <author>Flex_Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301415</guid>
        <pubDate>Wed, 18 Feb 2004 13:46:39 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301415</link>
        <description><![CDATA[Budda: :( сильно намучено, помимо прочего, не могу понять назначение вот этого:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">// Объявлеяем общий шаблон. Он будет использован для &quot;остальных&quot; классов</div><div class="code_line">&nbsp;template&#60;class T&#62; class Accessor_t </div><div class="code_line">&nbsp;{</div><div class="code_line">&nbsp;&nbsp;Accessor_t(C1* parent) {;};</div><div class="code_line">&nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;// Объявляем специализацию, которая открывает доступ конкретному классу</div><div class="code_line">&nbsp;template&#60;&#62; class Accessor_t&#60;C2*&#62; : public BaseAccessor</div><div class="code_line">&nbsp;{</div><div class="code_line">&nbsp;public:</div><div class="code_line">&nbsp;&nbsp;Accessor_t(C1* parent) : BaseAccessor(parent) {;}</div><div class="code_line">&nbsp;};</div></ol></div></div></div></div>]]></description>
        <author>Budda</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301406</guid>
        <pubDate>Wed, 18 Feb 2004 13:29:34 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301406</link>
        <description><![CDATA[Flex_Ferrum: Этот вариант легко модифицируется к варианту со статическими методами. А используя приватное наследование и using можно легко регулировать доступ для разных классов.]]></description>
        <author>Flex_Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301356</guid>
        <pubDate>Wed, 18 Feb 2004 12:27:28 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301356</link>
        <description><![CDATA[Flex_Ferrum: Можно замутить еще такой вариант. Предполагаем, что регулированием доступа занимается класс C1:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">class C1</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;C1() {;}</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Объявляем класс, предоставляющий доступ</div><div class="code_line">&nbsp;&nbsp; &nbsp;class BaseAccessor</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BaseAccessor(C1* parent) : m_Parent(parent) {;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int GetC1() {return m_Parent-&#62;m_C1;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int GetC2() {return m_Parent-&#62;m_C2;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;C1* m_Parent;</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Объявлеяем общий шаблон. Он будет использован для &quot;остальных&quot; классов</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;class T&#62; class Accessor_t </div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Accessor_t(C1* parent) {;};</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Объявляем специализацию, которая открывает доступ конкретному классу</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;&#62; class Accessor_t&#60;C2*&#62; : public BaseAccessor</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Accessor_t(C1* parent) : BaseAccessor(parent) {;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;friend class C1::BaseAccessor;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int m_C1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int m_C2;</div><div class="code_line">&nbsp;</div><div class="code_line">public: &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;// Метод, возвращающий объект, через который будем получать доступ.</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;class T&#62; Accessor_t&#60;T*&#62; GetAccess(T* obj)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return Accessor_t&#60;T*&#62;(this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">class C2</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void Foo(C1* ptr);</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">void C2::Foo(C1* ptr)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;ptr-&#62;GetAccess(this).GetC1();</div><div class="code_line">&nbsp;&nbsp; &nbsp;ptr-&#62;GetAccess(this).GetC2();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">class C3</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void Foo(C1* ptr);</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">void C3::Foo(C1* ptr)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;//ptr-&#62;GetAccess(this).GetC1();</div><div class="code_line">&nbsp;&nbsp; &nbsp;//ptr-&#62;GetAccess(this).GetC2();</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Под студией, если раскомментарить последние две строчки - будет ошибка компиляции.]]></description>
        <author>Flex_Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301340</guid>
        <pubDate>Wed, 18 Feb 2004 11:54:07 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301340</link>
        <description><![CDATA[trainer: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Budda</strong>, 18.02.04, 11:26<br>
Нужно чё-нить простое, но крутое&#33;</div></div><br>
:D]]></description>
        <author>trainer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301335</guid>
        <pubDate>Wed, 18 Feb 2004 11:42:50 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301335</link>
        <description><![CDATA[reporter: <div class="tag-mod"><div class="tag-mod__prefix">M</div><div class="tag-mod__body">Тopic moved here from <a href='http&#58;//forum.sources.ru/index.php?showforum=4'>Visual C++ / MFC / WTL / WinAPI</a></div></div>]]></description>
        <author>reporter</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301330</guid>
        <pubDate>Wed, 18 Feb 2004 11:35:38 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301330</link>
        <description><![CDATA[Flip: Можно конечно придумать ещё несколько извратов на данную тему, по разному наследовать промежуточный класс в том числе и от T2 есть варианты, отработать использование protected, скрыть дополнительные функции с помощью define или template. Но сделать, как мне кажется, это красиво ну никак не выйдет.]]></description>
        <author>Flip</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301322</guid>
        <pubDate>Wed, 18 Feb 2004 11:21:59 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301322</link>
        <description><![CDATA[Budda: 2<strong class='tag-b'>Flip</strong> - извращенец (в хорошем смысле)]]></description>
        <author>Budda</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301316</guid>
        <pubDate>Wed, 18 Feb 2004 11:18:28 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301316</link>
        <description><![CDATA[Flip: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">class T1 {</div><div class="code_line">&nbsp;private:</div><div class="code_line">&nbsp;&nbsp;friend class FARSH;</div><div class="code_line">&nbsp;&nbsp;class C2 *pC2;</div><div class="code_line">&nbsp;&nbsp;class C1 *pC1;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">class FARSH {</div><div class="code_line">&nbsp;private:</div><div class="code_line">&nbsp;&nbsp;friend class T2;</div><div class="code_line">&nbsp;&nbsp;static C2 * GetpC2(T1&amp; t1) { return t1.pC2; }</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">class T2 {</div><div class="code_line">&nbsp;&nbsp;T1 t;</div><div class="code_line">&nbsp;public:</div><div class="code_line">&nbsp;&nbsp;T2() { C2 *pC2=FARSH::GetpC2(t); }</div><div class="code_line">};</div></ol></div></div></div></div><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">class T2 {</div><div class="code_line">&nbsp;public:</div><div class="code_line">&nbsp;&nbsp;T2(class T1&amp; t) { class C2 *pC2=GetpC2(t); }</div><div class="code_line">&nbsp;&nbsp;class C2 * GetpC2(T1&amp; t1);</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">class T1 {</div><div class="code_line">&nbsp;private:</div><div class="code_line">&nbsp;&nbsp;friend C2* T2::GetpC2(T1&amp;);</div><div class="code_line">&nbsp;&nbsp;class C2 *pC2;</div><div class="code_line">&nbsp;&nbsp;class C1 *pC1;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">C2 * T2::GetpC2(T1&amp; t1) { </div><div class="code_line">&nbsp;&nbsp;return t1.pC2; // Но тут при желании можно обратиться к pC1!</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Flip</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301286</guid>
        <pubDate>Wed, 18 Feb 2004 10:37:00 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301286</link>
        <description><![CDATA[Budda: Да это решение... намученное правда...<br>
<br>
в этом случае действительно комменитировать нечего, поскольку код правилен и ясен.<br>
<br>
Спасибо. А ещё идеи есть? Например без использования дополнительного класса?<br>
<br>
З.Ы. 2<strong class='tag-b'>Lucifer</strong>, видишь? Здесь есть более находчивые люди.]]></description>
        <author>Budda</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301258</guid>
        <pubDate>Wed, 18 Feb 2004 09:35:26 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301258</link>
        <description><![CDATA[Flip: Да такой пример действительно работать не будет. Забыл я его проверить.<br>
Придётся так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">class T0 {</div><div class="code_line">&nbsp;private:</div><div class="code_line">&nbsp;&nbsp;friend class T1;</div><div class="code_line">&nbsp;&nbsp;class C1 *pC1;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">class T1: public T0 {</div><div class="code_line">&nbsp;private:</div><div class="code_line">&nbsp;&nbsp;friend class T2;</div><div class="code_line">&nbsp;&nbsp;class C2 *pC2;</div><div class="code_line">};</div></ol></div></div></div></div><br>
Коментировать тут нечего доступ к pC1 имеет только T1, а разрешение на доступ к pC2 для T2 на pC1 не распространяется.]]></description>
        <author>Flip</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301254</guid>
        <pubDate>Wed, 18 Feb 2004 09:31:38 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301254</link>
        <description><![CDATA[Budda: Не понимаю, что это даёт?<br>
<br>
pC1 станет protected для T1, а поскольку класс T2 станет другом для Т1, то и к рС1 он тоже будет иметь доступ.<br>
<br>
Или я не прав?<br>
<br>
Прошу приводить код с коммантариями <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='8' style='font-size:8pt;'><strong class='tag-b'>Добавлено в <time class="tag-mergetime" datetime="2004-02-18T09:33:15+00:00">18.02.04, 09:33</time></strong>:</span></span><br>
Да нет, не склероз. Просто раздел &quot;Билдер&quot; многие КЛАССНЫЕ программеры из раздела &quot;Visual C&quot; порсто не посещают. Вот потому я спрашиваю здесь]]></description>
        <author>Budda</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301247</guid>
        <pubDate>Wed, 18 Feb 2004 09:27:06 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301247</link>
        <description><![CDATA[Flip: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">class T0 {</div><div class="code_line">&nbsp;protected:</div><div class="code_line">&nbsp;&nbsp;C1 *pC1;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">class T1: private T0 {</div><div class="code_line">&nbsp;private:</div><div class="code_line">&nbsp;&nbsp;friend class T2;</div><div class="code_line">&nbsp;&nbsp;C2 *pC2;</div><div class="code_line">};</div></ol></div></div></div></div>]]></description>
        <author>Flip</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301223</guid>
        <pubDate>Wed, 18 Feb 2004 08:50:50 +0000</pubDate>
        <title>Друзья класса</title>
        <link>https://forum.sources.ru/index.php?showtopic=45932&amp;view=findpost&amp;p=301223</link>
        <description><![CDATA[Budda: class T1{<br>private:<br>C1 *pC1;<br>C2 *pC2;<br>};<br>class T2{<br>private<br>C3 *pC3;<br>};<br><br>Есть объекты<br>T1 m1;<br>T2 m2;<br><br>Как из объекта m2 получить доступ к полю pC2 объекта m1?<br>1. При этом любой другой класс не должен иметь доступа к полю pC2&#33;<br>2. При этом класс C2 должен иметь доступ только к pC2, поле pC1 должно оставаться для него недоступным.<br><br>Хочу сделать что-то типа друга класса. Возожно ли это?<br>Но вариант <br>class T1{<br>private:<br>friend T2;<br>C1 *pC1;<br>C2 *pC2;<br>};<br><br>не проходит, ибо не выполняется условие 2.<br><br>Как выполнить поставленную задачу?]]></description>
        <author>Budda</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	