<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Явное использование дочернего класса в родительском</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7675.html</link>
    <description>Привет всем!&lt;br&gt;Возникла проблема. Проиллюстрирую ее на следующем примере:&lt;br&gt;&lt;br&gt;class Base&lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;Base() &#123;&#125;&lt;br&gt;virtual ~Base() &#123;&#125;&lt;br&gt;&lt;br&gt;private:&lt;br&gt;Child m_p;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;class Child : public Base&lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;Child() &#123;&#125;&lt;br&gt;virtual ~Child() &#123;&#125;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;Сборка обламывается со следующим сообщением об ошибке: &amp;#8216;Child&amp;#8217; does not name a type&lt;br&gt;Т.е. при явном использовании дочернего класса в родительском, компилятор требует объявления класса &quot;Child&quot; перед классом &quot;Base&quot;, что в принципе и логично! Но класс &quot;Child&quot; является дочерним классом класса &quot;Base&quot;, что в свою очередь требует объявления класса &quot;Base&quot; перед классом &quot;Child&quot;!&lt;br&gt;Предобъявление класса &quot;Child&quot; (class Child;) перед &quot;Base&quot; естественно не является решением, т.к. использование класса &quot;Child&quot; явное. Получается какая то рекурсия...&lt;br&gt;В принципе, я немного изменил архитектуру проекта избавившись от данной иерархии наследования, но возникшая проблема не дает мне покоя...&lt;br&gt;У кого какие будут предложения по решению этого вопроса? Или данная проблема фундаменталь</description>

<item>
    <title>Явное использование дочернего класса в родительском (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7675.html#4</link>
    <pubDate>Wed, 29 Oct 2008 23:03:31 GMT</pubDate>
    <description>&amp;gt;Данный подход -- &quot;Явное использование дочернего класса в родительском&quot; -- явно противоречит &lt;br&gt;&amp;gt;идеологии объектно-ориентированного программирования и является ошибкой проектирования. Не делайте так. Нигде &lt;br&gt;&amp;gt;и никогда. &lt;br&gt;&lt;br&gt;Это ошибка здравого смысла. Обьект содержит сам себя. А тот ещё себя. ПОлучается бесконечная матрёшка )))&lt;br&gt;</description>
</item>

<item>
    <title>Явное использование дочернего класса в родительском (Keeper)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7675.html#3</link>
    <pubDate>Wed, 29 Oct 2008 16:49:21 GMT</pubDate>
    <description>Данный подход -- &quot;Явное использование дочернего класса в родительском&quot; -- явно противоречит идеологии объектно-ориентированного программирования и является ошибкой проектирования. Не делайте так. Нигде и никогда.&lt;br&gt;</description>
</item>

<item>
    <title>Явное использование дочернего класса в родительском (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7675.html#2</link>
    <pubDate>Wed, 29 Oct 2008 06:46:31 GMT</pubDate>
    <description>&amp;gt;У кого какие будут предложения по решению этого вопроса?&lt;br&gt;&lt;br&gt;Так лучше не делать. Если очень надо, то:&lt;br&gt;- перед определением класса Base добавить class Child;&lt;br&gt;- в классе Basе хранить не экземпляр класса Child, а указатель (или ссылку) на него (сооствественно понадобится конструктор, деструктор, конструктор копий и оператор присваивания определять)&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>во всём виноват великий ленин (Andrey Mitrofanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7675.html#1</link>
    <pubDate>Wed, 29 Oct 2008 06:25:18 GMT</pubDate>
    <description>&amp;gt;У кого какие будут предложения по решению этого вопроса?&lt;br&gt;&lt;br&gt;Наймите програмиста.&lt;br&gt;&lt;br&gt;&amp;gt;Или данная проблема фундаментальна? &lt;br&gt;&lt;br&gt;Да. Проблема &quot;создадим себе трудности, чтобы их героически преодолевать&quot; фундаментальна и не решаема в рамках любого языка програмирования.&lt;br&gt;</description>
</item>

</channel>
</rss>
