<?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=179209&amp;view=findpost&amp;p=1512719</guid>
        <pubDate>Fri, 06 Apr 2007 05:16:23 +0000</pubDate>
        <title>косяк с шаблонным классом</title>
        <link>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1512719</link>
        <description><![CDATA[ss: нашёл решение.<br>наследование должно быть виртуальным. тогда можно вызывать конструктор Tag( arguments ) напрямую.<br>есть возражения?]]></description>
        <author>ss</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511994</guid>
        <pubDate>Thu, 05 Apr 2007 12:49:54 +0000</pubDate>
        <title>косяк с шаблонным классом</title>
        <link>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511994</link>
        <description><![CDATA[ss: значит кроме как через явное задание значений полям класса в самом &quot;нижнем&quot; в иерархии конструкторе никак больше не сделать? код дублировать, значица, придётся?.. :(]]></description>
        <author>ss</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511960</guid>
        <pubDate>Thu, 05 Apr 2007 12:37:03 +0000</pubDate>
        <title>косяк с шаблонным классом</title>
        <link>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511960</link>
        <description><![CDATA[trainer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=179209&view=findpost&p=1511880'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ss &#064; <time class="tag-quote__quoted-time" datetime="2007-04-05T11:48:26+00:00">05.04.07, 11:48</time></span><div class='quote '>если писать Tag::Tag(arguments), тоже ничего получается</div></div>Это просто неправильно. По стандарту у конструкторов нет имен и их нельзя вызывать прямо(только косвенно через создание объекта), то, что MSVC это пропускает - это отклонение от стандарта.<br>
<br>
В списке инициализации можно указывать только прямых предков.]]></description>
        <author>trainer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511958</guid>
        <pubDate>Thu, 05 Apr 2007 12:36:56 +0000</pubDate>
        <title>косяк с шаблонным классом</title>
        <link>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511958</link>
        <description><![CDATA[ss: а Tag значит уже не базовый?..<br>Opening - это что-то абстрактное открывающее. неважно что - тэги, окна, двери... а я буду в нём создавать конструкторы, которые параметрами берёт чёрт-те-что? ему ни имя (name тэга), ни что бы то ни было не нужно для создания экземпляра. на то он и шаблон у меня, чтоб только о себе заботиться. так что мне надо с самого низа иерархии вызывать именно самый верхний конструктор, минуя все промежуточные уровни.<br><br>вобщем, не подходит.]]></description>
        <author>ss</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511940</guid>
        <pubDate>Thu, 05 Apr 2007 12:28:02 +0000</pubDate>
        <title>косяк с шаблонным классом</title>
        <link>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511940</link>
        <description><![CDATA[Sazabis: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=179209&view=findpost&p=1511880'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ss &#064; <time class="tag-quote__quoted-time" datetime="2007-04-05T11:48:26+00:00">05.04.07, 11:48</time></span><div class='quote '>error C2614: &#39;HTMLOpenTag&#39; : illegal member initialization: &#39;Tag&#39; is not a base or member</div></div><br>
Правильно, у тебя базовый Opening &lt; Tag &gt;, вот его и надо вызывать. А уже из него Tag]]></description>
        <author>Sazabis</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511880</guid>
        <pubDate>Thu, 05 Apr 2007 11:48:26 +0000</pubDate>
        <title>косяк с шаблонным классом</title>
        <link>https://forum.sources.ru/index.php?showtopic=179209&amp;view=findpost&amp;p=1511880</link>
        <description><![CDATA[ss: кратко обозвать проблему не сумел. как получится...<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">class Tag</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Tag( void ); &nbsp;//определён в сырце</div><div class="code_line">&nbsp;&nbsp; &nbsp;Tag( const char *name, const char *lB, const char *rB, int opt ); &nbsp;//этот тоже есть в сырце</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual ~Tag( void ); &nbsp;//аналогично</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual inline bool IsOpening(); &nbsp;//вертает false</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">protected:</div><div class="code_line">&nbsp;&nbsp; &nbsp;char *tagName;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int options;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;char *leftBracket;</div><div class="code_line">&nbsp;&nbsp; &nbsp;char *rightBracket;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">......</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;class Base&#62;</div><div class="code_line">class Opening : public Base</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Opening( ); // пустой. ниже в этом же хидере</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual ~Opening( void );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual int SetClosing( Closing &#60;Base&#62; *cl );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual inline bool IsOpening(); &nbsp;// вернёт true</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Closing &#60;Base&#62; *closing;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">......</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;class Base&#62;</div><div class="code_line">class HTML : public Base</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;HTML(void);</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual ~HTML(void);</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;class Base&#62;</div><div class="code_line">HTML&#60;Base&#62;::HTML(void)</div><div class="code_line">{</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;class Base&#62;</div><div class="code_line">HTML&#60;Base&#62;::~HTML(void)</div><div class="code_line">{</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">........</div><div class="code_line">&nbsp;</div><div class="code_line">class HTMLOpenTag : public HTML &#60; Opening &#60; Tag &#62; &#62;</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;HTMLOpenTag( const char *name, const char *lB, const char *rB, int opt );</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual ~HTMLOpenTag(void);</div><div class="code_line">};</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
теперь пытаюсь в HTMLOpenTag поюзать конструктор Tag, тот, что параметры принимает:<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">HTMLOpenTag::HTMLOpenTag( const char *name, const char *lB, const char *rB, int opt )</div><div class="code_line">&nbsp;&nbsp; &nbsp;: &nbsp; Tag( name, lB, rB, opt )</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
ругается:<br>
<span class="tag-font" data-value="Courier" style="font-family:Courier">error C2614: &#39;HTMLOpenTag&#39; : illegal member initialization: &#39;Tag&#39; is not a base or member</span><br>
<br>
если писать Tag::Tag(arguments), тоже ничего получается:<br>
<span class="tag-font" data-value="Courier" style="font-family:Courier">error C2039: &#39;__ctor&#39; : is not a member of &#39;Tag&#39;</span><br>
<br>
HTML&lt;Opening&lt;Tag &gt; &gt;::Opening&lt;Tag&gt;::Tag::Tag() - то же, что и в первом случае. ругается и на мембера, что он де не мембер вовсе...<br>
<br>
откуда руки растут, я знаю. вопрос - как исправить ситуёвину?<br>
<br>
забыл:<br>
VS 2003]]></description>
        <author>ss</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	