<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Cyclic Dependency если классы юзают друг друга</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8823.html</link>
    <description>есть ли способ объявить это не только для указателей? Напр.&lt;br&gt;&lt;br&gt;//A.h&lt;br&gt;#include &quot;B.h&quot;&lt;br&gt;class A &#123;&lt;br&gt;private: B* ptr;&lt;br&gt;public: void func () &#123; ptr = new B(); &#125;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;//B.h&lt;br&gt;#include &quot;A.h&quot;&lt;br&gt;class B &#123;&lt;br&gt;private: A* ptr;&lt;br&gt;public: void func () &#123; ptr = new A(); &#125;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;&lt;br&gt;Forward declaration позволяет работать только с указателями, а операция new (или объявление экземпляра класса) недоступна.&lt;br&gt;&lt;br&gt;Есть ли решение?&lt;br&gt;&lt;br&gt;</description>

<item>
    <title>Cyclic Dependency если классы юзают друг друга (Michelnok)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8823.html#3</link>
    <pubDate>Wed, 04 Aug 2010 12:39:42 GMT</pubDate>
    <description>&amp;gt; надо вынести определения функций из хедеров в cpp. &lt;br&gt;&lt;br&gt;Либо оставить в заголовке, но вынести за пределы класса, если хочется inline&lt;br&gt;</description>
</item>

<item>
    <title>Cyclic Dependency если классы юзают друг друга (andr.ru)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8823.html#2</link>
    <pubDate>Wed, 04 Aug 2010 08:29:51 GMT</pubDate>
    <description>Решение оказалось простое - надо вынести определения функций из хедеров в cpp.&lt;br&gt;&lt;br&gt;Never mind&lt;br&gt;</description>
</item>

<item>
    <title>Cyclic Dependency если классы юзают друг друга (DeadMustdie1)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8823.html#1</link>
    <pubDate>Wed, 04 Aug 2010 07:29:01 GMT</pubDate>
    <description>&lt;br&gt;Всё в одном файле:&lt;br&gt;&lt;br&gt;&lt;br&gt;class B;&lt;br&gt;&lt;br&gt;class A &#123;&lt;br&gt;private:&lt;br&gt;  const B&amp; b;&lt;br&gt;&lt;br&gt;public:&lt;br&gt;  A();&lt;br&gt;  B* func();&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;class B &#123;&lt;br&gt;private:&lt;br&gt;  A* pa;&lt;br&gt;&lt;br&gt;public:&lt;br&gt;  B();&lt;br&gt;  void func();&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;inline A::A()&lt;br&gt;  : b(B())&lt;br&gt;&#123;&#125;&lt;br&gt;&lt;br&gt;inline B* A::func()&lt;br&gt;&#123;&lt;br&gt;  return new B();&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;inline B::B()&lt;br&gt;  : pa(0)&lt;br&gt;&#123;&#125;&lt;br&gt;&lt;br&gt;inline void B::func()&lt;br&gt;&#123;&lt;br&gt;  if ( pa==0 )&lt;br&gt;    pa = new A();&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;&lt;br&gt;int main()&lt;br&gt;&#123;&lt;br&gt;  A a;&lt;br&gt;  B b;&lt;br&gt;  return 0;&lt;br&gt;&#125;&lt;br&gt;</description>
</item>

</channel>
</rss>
