<?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=466801&amp;view=findpost&amp;p=3930201</guid>
        <pubDate>Thu, 16 Oct 2025 18:21:33 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930201</link>
        <description><![CDATA[Majestio: :wall:  :lool:]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930181</guid>
        <pubDate>Thu, 16 Oct 2025 14:17:06 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930181</link>
        <description><![CDATA[Qraizer: У меня пунктик: не просто выдать факт, а объяснить его, идеально – почему так, а не как-нибудь иначе. Связи концепций лучше усваиваются и дают понимание системы, а не просто её знание.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930177</guid>
        <pubDate>Thu, 16 Oct 2025 13:36:35 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930177</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3930099'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-10-15T15:02:46+00:00">15.10.25, 15:02</time></span><div class='quote '>Уровни предупреждений от 1 и до... обычно 4, но бывает и больше (у Intel compiler, например, 5) определяют степень важности предупреждения, по какой-то там шкале. Чем больше цифра, тем менее важное. У каждого предупреждения есть некий уровень, и он фиксирован для него. Когда выставляешь желаемый уровень диагностики, предупреждения с большим уровнем компилятор подавляет. Например «warning C4018: &lt;: несоответствие типов со знаком и без знака» у Студии имеет уровень 3, а «warning C4389: ==: несоответствие типов со знаком и без знака» уровень 4, поэтому выставив желаемый уровень 3, увидишь в диагностике первые, но не увидишь вторых.<br>
У разных компиляторов может быть по-разному. Даже распределение предупреждений по уровням, не говоря уже о списке странностей, которые способен обнаружить. По умолчанию уровень обычно 1, когда ставишь 4, компилер будет рассказывать о твоём коде больше, как правило всё, до чего сможет докопаться. Чтобы побить себя по рукам, можно попросить компилятор расценивать любые предупреждения как ошибки, тогда он при обнаружении хотя бы одного, даже самого с его точки зрения некритичного, даже при отсутствии ошибок, будет отказываться собирать код как при ошибках. Довольно кардинально, на спорю. Студия в качестве соломонова решения умеет рассматривать как ошибки только предупреждения с неким указанным уровнем и строже, те, что помягче, не будут стопорить сборку.</div></div><br>
Ой, <strong class='tag-b'>Qraizer</strong>, ну ты же знаешь как я тебя уважаю&#33;<br>
Но ты часто бываешь такой &quot;душный&quot; =) Ну чтобы просто сказать, мол &quot;увеличение уровня предупреждений увеличивает детализацию сообщений об ошибках&quot;. Это всё. Обнять и плакать :&#39;(]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930099</guid>
        <pubDate>Wed, 15 Oct 2025 15:02:46 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930099</link>
        <description><![CDATA[Qraizer: Уровни предупреждений от 1 и до... обычно 4, но бывает и больше (у Intel compiler, например, 5) определяют степень важности предупреждения, по какой-то там шкале. Чем больше цифра, тем менее важное. У каждого предупреждения есть некий уровень, и он фиксирован для него. Когда выставляешь желаемый уровень диагностики, предупреждения с большим уровнем компилятор подавляет. Например «<strong class='tag-b'>warning C4018: &lt;: несоответствие типов со знаком и без знака</strong>» у Студии имеет уровень 3, а «<strong class='tag-b'>warning C4389: ==: несоответствие типов со знаком и без знака</strong>» уровень 4, поэтому выставив желаемый уровень 3, увидишь в диагностике первые, но не увидишь вторых.<br>
У разных компиляторов может быть по-разному. Даже распределение предупреждений по уровням, не говоря уже о списке странностей, которые способен обнаружить. По умолчанию уровень обычно 1, когда ставишь 4, компилер будет рассказывать о твоём коде больше, как правило всё, до чего сможет докопаться. Чтобы побить себя по рукам, можно попросить компилятор расценивать любые предупреждения как ошибки, тогда он при обнаружении хотя бы одного, даже самого с его точки зрения некритичного, даже при отсутствии ошибок, будет отказываться собирать код как при ошибках. Довольно кардинально, на спорю. Студия в качестве соломонова решения умеет рассматривать как ошибки только предупреждения с неким указанным уровнем и строже, те, что помягче, не будут стопорить сборку.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930092</guid>
        <pubDate>Wed, 15 Oct 2025 13:53:11 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3930092</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929956'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-13T19:39:24+00:00">13.10.25, 19:39</time></span><div class='quote '>Именно поэтому на всех серьезных проектах ставят warning as error и warning level 4.</div></div><br>
Это что такое, warning as error и warning level 4?]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929956</guid>
        <pubDate>Mon, 13 Oct 2025 19:39:24 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929956</link>
        <description><![CDATA[sharky72: Именно поэтому на всех серьезных проектах ставят warning as error и warning level 4.]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929955</guid>
        <pubDate>Mon, 13 Oct 2025 16:34:22 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929955</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929949'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-13T15:01:49+00:00">13.10.25, 15:01</time></span><div class='quote '>Почему так проиходит?</div></div>Потому что <span class="tag-font" data-value="Courier" style="font-family:Courier">template&lt;typename T&gt; MyString&amp; operator=(const T a)</span> принимает любой T, в частности и std::wstring тоже. Поэтому operator=() в строке <span class="tag-font" data-value="Courier" style="font-family:Courier">*this = StringConverter::toString(a)</span> после преобразования любого T в std::wstring снова вызывает сам себя, но уже с T, выведенным как std::wstring, что в свою очередь опять вызовет StringConverter::toString() с аргументом std::wstring в качестве T, т.к. <span class="tag-font" data-value="Courier" style="font-family:Courier">template&lt;typename T&gt; std::wstring StringConverter::toString(T val)</span> опять-таки принимает любой T.<br>
Чтобы этого не происходило, нужно отвязать MyString::operator=() от std::wstring, предоставив более специализированную реализацию, или использовать какой-нибудь operator=(), не принадлежащий MyString. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-13T16:40:05+00:00">13.10.25, 16:40</time></span></span><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">                std::wstring temp = StringConverter::toString(a);</div><div class="code_line">                this-&#62;assign(std::move(temp)); // используем базовую реализацию assign из wstring</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>чтобы сразу переместить. Это не критично, но работать будет быстрее.<br>
P.S. Если с семантикой перемещения пока не знаком, не бери в голову. Больше путаться будешь, чем выигрывать от оптимизации. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-13T16:46:49+00:00">13.10.25, 16:46</time></span></span><br>
P.P.S. Ты реализовал второе решение разрыва рекурсии, с использованием методов, не принадлежащих MyString. Альтернативный вариант с более специализированным operator=() может быть таким: просто добавить ещё один operator=(), который перегрузит шаблонный:<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;&nbsp;MyString&amp; operator=(const std::wstring&amp; a)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;std::wstring::operator=(a);</div><div class="code_line">/* как вариант:</div><div class="code_line">&nbsp;&nbsp; &nbsp;*static_cast&#60;std::wstring*&#62;(this) = a;</div><div class="code_line">&nbsp;&nbsp; сработает, т.к. std::wstring является базовым для MyString, и в нём есть свой operator=(std::wstring)</div><div class="code_line">*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;return *this;</div><div class="code_line">&nbsp;&nbsp;}</div></ol></div></div></div></div>Тут тоже используется альтернативный operator=(), предоставляемый std::wstring, мы его просто используем в подходящий момент. Т.к. <span class="tag-font" data-value="Courier" style="font-family:Courier">MyString&amp; MyString::operator=(const std::wstring&amp;)</span> нешаблонный, он априори более специализирован, чем шаблонный, поэтому при прочих равных компилятор выберет его. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-13T17:02:49+00:00">13.10.25, 17:02</time></span></span><br>
Позволь совет на будущее: если программа собирается и даже запускается, это ещё не означает, что с ней всё в порядке. Это должно быть и так понятно, конечно, иначе бы программы после успешной сборки всегда работали идеально. Компилятор не может залезть тебе в голову и понять, что ты хотел написать, поэтому компилит ровно то, что ты написал, а не что хотел написать. Но предупреждения компиляторам выдумали не просто так. Он всё-таки пытается понять написанное в рамках своей скудной разумности, и если увидит что-то непротиворечащее правилам Языка, однако с его точки зрения странное, код-то он соберёт, но предупредит, что тут что-то с его точки зрения не так. Предупреждениям компиляторы не зря научили, к ним всегда стоит присматриваться. Многие этого не понимают и просто их игнорируют, мол, собралось же. Однако даже самое незначительное на первый взгляд, типа &quot;локальная переменная определена и не используется&quot; иногда может указывать на серьёзную ошибку: вместо неё в программе заюзана одноимённая глобальная. Всегда стоит стараться избавляться от предупреждений, причём ни в коем случае не подавлением (кроме ситуаций, когда это зависит не от тебя, и ты просто ничего не можешь сделать; типичный пример – ругательства компилятора на несоответствие знаковости типов внутри какого-нибудь &lt;sys/socket.h&gt;, ибо не ты писал этот идиотский API, а Беркли), а путём исправления кода, иначе за простынёй неважных предупреждений запросто пропустишь реально важные.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929954</guid>
        <pubDate>Mon, 13 Oct 2025 16:15:03 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929954</link>
        <description><![CDATA[DDim1000: Решение:<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">// ...</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Класс для работы со строками</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;class MyString : public std::wstring</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyString();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyString(std::wstring &nbsp; &nbsp;s);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyString(const wchar_t* s);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyString&amp; operator=(const T a)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::wstring temp = StringConverter::toString(a);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this-&#62;assign(temp); // используем базовую реализацию assign из wstring</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return *this;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">// ...</div></ol></div></div></div></div>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929949</guid>
        <pubDate>Mon, 13 Oct 2025 15:01:49 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929949</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-10-13T14:29:28+00:00">13.10.25, 14:29</time></span><div class='quote '>P.S. Ты на предупреждения не смотришь?</div></div><br>
Никаких предупреждений не вижу. Сборка проходит без ошибок и предупреждений.<br>
<span class="b-attach" data-size="102438" data-hits="458" data-attach-id="67426" data-attach-post-id="3929949">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3929949&amp;attach_id=67426' title='Скачать файл' target='_blank'>tab.png</a> (, : 458)
		</span> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-13T15:05:48+00:00">13.10.25, 15:05</time></span></span><br>
Все, увидил.<br>
<strong class='tag-b'>1&gt;D:&#092;Programming&#092;VS&#092;source&#092;repos&#092;Test&#092;Test&#092;DataTable.h(36,1): warning C4717: school::MyString::operator=&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt;: рекурсия на всех путях выполнения, функция вызовет переполнение стека</strong><br>
<br>
Почему так проиходит?]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929948</guid>
        <pubDate>Mon, 13 Oct 2025 14:29:28 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929948</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929932'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-13T11:13:43+00:00">13.10.25, 11:13</time></span><div class='quote '><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">D:\Programming\VS\source\repos\Test\x64\Debug\Test.exe (процесс 30896) завершил работу с кодом -1073741571 (0xc00000fd).</div></ol></div></div></div></div></div></div>0xc00000fd – переполнение стека, похоже. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-13T14:35:07+00:00">13.10.25, 14:35</time></span></span><br>
P.S. Ты на предупреждения не смотришь?<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">DataTable.h(36) : warning C4717: school::MyString::operator=&#60;std::basic_string&#60;wchar_t,std::char_traits&#60;wchar_t&#62;,std::allocator&#60;wchar_t&#62; &#62; &#62;: рекурсия на всех путях выполнения, функция вызовет переполнение стека</div></ol></div></div></div></div>]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929932</guid>
        <pubDate>Mon, 13 Oct 2025 11:13:43 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929932</link>
        <description><![CDATA[DDim1000: Я отредактировал код, но одна ошибка осталась: <span class="tag-color tag-color-named" data-value="red" style="color: red">идентификатор &quot;run&quot; не определен</span>. <br>
Подскажите, пожалуйста, как исправить ошибку?<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">#pragma once</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;sstream&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">#include &#60;locale&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">namespace school {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;#define l(v) std::wcout &#60;&#60; #v &#60;&#60; &quot; = &quot; &#60;&#60; (v) &#60;&#60; &quot;\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Класс-обертка для преобразования в строку</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;class StringConverter</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static std::wstring toString(T val)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return (std::wostringstream() &#60;&#60; val).str();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Класс для работы со строками</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;class MyString : public std::wstring</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyString();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyString(std::wstring &nbsp; &nbsp;s);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyString(const wchar_t* s);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyString&amp; operator=(const T a)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return *this = StringConverter::toString(a);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Класс для работы с вектором</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;class MyVector : public std::vector&#60;T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;T&amp; operator[](const size_t i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (i &#62;= this-&#62;size()) this-&#62;resize(i + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return *(this-&#62;begin() + i);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void resize(size_t new_size, const T&amp; value = T())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::vector&#60;T&#62;::resize(new_size, value);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Класс для форматирования таблицы</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;class TableFormatter</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TableFormatter(size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void format();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void calculateMaxColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void resizeRows();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void addRowNumbers();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void calculateColumnWidths();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void alignColumns(); // Заглушка для совместимости с логикой</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void alignHeaders(); // Заглушка для совместимости с логикой</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Класс для вывода таблицы</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;class TablePrinter</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TablePrinter(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void print(std::wostream&amp; o);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::wstring createLine();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void printHeader(std::wostream&amp; o);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void printRows(std::wostream&amp; o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Основной класс таблицы</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;class Tab</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;size_t CMAX = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Tab() = default</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Tab();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// объявление оператора[]</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; operator[](const size_t i);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename ... T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void head(T ... t)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(h.push_back(StringConverter::toString(t)), ...);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void formater();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Объявляем дружественные классы</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;friend class TableFormatter;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;friend class TablePrinter;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;friend std::wostream&amp; operator&#60;&#60;(std::wostream&amp; o, Tab&amp; t);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wostream&amp; operator&#60;&#60;(std::wostream&amp; o, Tab&amp; t);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///----------------------------------------------------------------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Тест.</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///----------------------------------------------------------------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;class TabTest</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void run();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">} // namespace school</div></ol></div></div></div></div><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">#include &quot;DataTable.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">namespace school {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Реализация методов MyString</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString::MyString() : std::wstring() {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString::MyString(std::wstring s) : std::wstring(s) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString::MyString(const wchar_t* s) : std::wstring(s) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Явная инстанциация шаблонов</div><div class="code_line">&nbsp;&nbsp; &nbsp;template class MyVector&#60;MyString&#62;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;template class MyVector&#60;MyVector&#60;MyString&#62;&#62;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Реализация TableFormatter</div><div class="code_line">&nbsp;&nbsp; &nbsp;TableFormatter::TableFormatter(size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: m(data), h(header), CMAX(cmax)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TableFormatter::format()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;calculateMaxColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;resizeRows();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;addRowNumbers();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;calculateColumnWidths();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;alignColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;alignHeaders();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TableFormatter::calculateMaxColumns()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; e : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#60; e.size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMAX = e.size();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TableFormatter::resizeRows()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (auto&amp; e : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#62; e.size()) e.resize(CMAX);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#62; h.size()) h.resize(CMAX);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TableFormatter::addRowNumbers()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m[r][0] = StringConverter::toString(r + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TableFormatter::calculateColumnWidths()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::vector&#60;size_t&#62; n(CMAX, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Инициализация ширинами заголовков</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t i = 0; i &#60; h.size() &amp;&amp; i &#60; CMAX; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;n[i] = h[i].size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Нахождение максимальных ширин</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (n[c] &#60; m[r][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;n[c] = m[r][c].size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Выравнивание столбцов</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (n[c] &#62; m[r][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m[r][c].resize(n[c], &#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Выравнивание заголовков</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (h[c].size() &#60; m[0][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;h[c].resize(m[0][c].size(), &#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TableFormatter::alignColumns() {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TableFormatter::alignHeaders() {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Реализация TablePrinter</div><div class="code_line">&nbsp;&nbsp; &nbsp;TablePrinter::TablePrinter(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: CMAX(cmax), m(data), h(header)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TablePrinter::print(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wstring line = createLine();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; line &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printHeader(o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39;\n&#39; &#60;&#60; line &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printRows(o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; line &#60;&#60; &#39;\n&#39; &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::wstring TablePrinter::createLine()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wstring line;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;line += std::wstring(h[c].size() + 3, &#39;=&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return line;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TablePrinter::printHeader(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39; &#39; &#60;&#60; h[c] &#60;&#60; &quot; |&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TablePrinter::printRows(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; r : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; e : r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39; &#39; &#60;&#60; e &#60;&#60; &quot; |&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Реализация Tab</div><div class="code_line">&nbsp;&nbsp; &nbsp;//Tab::Tab() {};</div><div class="code_line">&nbsp;&nbsp; &nbsp;Tab::Tab() = default;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; Tab::operator[](const size_t i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (i &#62;= m.size()) m.resize(i + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return *(m.begin() + i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void Tab::formater()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TableFormatter formatter(CMAX, m, h);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;formatter.format();</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;std::wostream&amp; operator&#60;&#60;(std::wostream&amp; o, Tab&amp; t)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;t.formater();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TablePrinter printer(t.CMAX, t.m, t.h);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printer.print(o);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return o;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Реализация TabTest</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TabTest::run()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Создаём табулятор. &nbsp; &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Tab tab;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Заголовок. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab.head(L&quot;NN&quot;, L&quot;Первый&quot;, L&quot;Второй&quot;, 3);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Как угодно заполняем. |</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[1][1] = 2020;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[2][2] = &quot;qwerty&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[4][3] = 3.14;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[0][4] = L&quot;Яша + Оля&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Вывод на экран/файл. &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wcout &#60;&#60; tab;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[2][4] = 2025;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[3][5] = &#39;A&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wcout &#60;&#60; tab;</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Файл Source.cpp:<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">#include &quot;DataTable.h&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace school;</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(0, &quot;ru&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TabTest test;</div><div class="code_line">&nbsp;&nbsp;test,run();</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-13T12:08:03+00:00">13.10.25, 12:08</time></span></span><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;TabTest test;</div><div class="code_line">&nbsp;&nbsp;test,run();</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">D:\Programming\VS\source\repos\Test\x64\Debug\Test.exe (процесс 30896) завершил работу с кодом -1073741571 (0xc00000fd).</div><div class="code_line">Нажмите любую клавишу, чтобы закрыть это окно:</div></ol></div></div></div></div> <br>
Почему?]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929885</guid>
        <pubDate>Sat, 11 Oct 2025 21:33:20 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929885</link>
        <description><![CDATA[sharky72: Вы понимаете разницу между объявлением и реализацией?<br>
Я же вам привел пример объявления класса в .h и реализации его методов в .cpp<br>
<br>
<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=466801&st=60#' target='_blank'>Как исправить ошибку: &quot;LNK2019 ссылка на неразрешенный внешний символ&quot;?</a><br>
<br>
Ну почитайте хотя бы основы C++<br>
<a class='tag-url' href='https://www.learncpp.com/cpp-tutorial/classes-and-header-files/' target='_blank'>https://www.learncpp.com/cpp-tutorial/class...d-header-files/</a>]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929884</guid>
        <pubDate>Sat, 11 Oct 2025 17:59:15 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929884</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929883'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-11T17:26:34+00:00">11.10.25, 17:26</time></span><div class='quote '>...<br>
Если же вы хотите написать нормально и не копировать код в другом файле - то в заголовок размещается объявление классов, функций, дефайнов (если они влияют на несколько единиц трансляции), а вся реализация - выносится в cpp файл.</div></div><br>
Я так и хочу сделать, заголовки разместить в h-файле, а реализацию в cpp-файл. Но проблема в том, что я не понимаю как в данном случае вынести заголовки.]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929883</guid>
        <pubDate>Sat, 11 Oct 2025 17:26:34 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929883</link>
        <description><![CDATA[sharky72: У вас проблема в том что вы и в заголовок и в cpp файл впихнули одно и то же.<br>Вы уж определитесь нужен ли вам в данном случае вообще заголовок. Если больше никто этот ваш код использовть не будет и нигде кроме этого файла эти классы не понадобятся - то да, можно и так.<br>Если же вы хотите написать нормально и не копировать код в другом файле - то в заголовок размещается объявление классов, функций, дефайнов (если они влияют на несколько единиц трансляции), а вся реализация - выносится в cpp файл.]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929882</guid>
        <pubDate>Sat, 11 Oct 2025 09:57:23 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929882</link>
        <description><![CDATA[DDim1000: Я так понял, что у меня пробле с загаловками? Потому что в одном файле все работает.<br>
<br>
Source.cpp:<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">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;sstream&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">#include &#60;locale&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">#define l(v) std::wcout &#60;&#60; #v &#60;&#60; &quot; = &quot; &#60;&#60; (v) &#60;&#60; &quot;\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс-обертка для преобразования в строку</div><div class="code_line">class StringConverter</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;static std::wstring toString(T val)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return (std::wostringstream() &#60;&#60; val).str();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс для работы со строками</div><div class="code_line">class MyString : public std::wstring</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString() : std::wstring() {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString(std::wstring &nbsp; &nbsp;s) : std::wstring(s) {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString(const wchar_t* s) : std::wstring(s) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString&amp; operator=(const std::wstring&amp; a)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return &nbsp; *static_cast&#60;std::wstring*&#62;(this) = a, *this;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString&amp; operator=(const T a)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return *this = StringConverter::toString(a);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс для работы с вектором</div><div class="code_line">template&#60;typename T&#62;</div><div class="code_line">class MyVector : public std::vector&#60;T&#62;</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;T&amp; operator[](const size_t i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (i &#62;= this-&#62;size()) this-&#62;resize(i + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return *(this-&#62;begin() + i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void resize(size_t new_size, const T&amp; value = T())</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::vector&#60;T&#62;::resize(new_size, value);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс для форматирования таблицы</div><div class="code_line">class TableFormatter</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;TableFormatter(size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: m(data), h(header), CMAX(cmax)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void format()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;calculateMaxColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;resizeRows();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;addRowNumbers();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;calculateColumnWidths();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;alignColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;alignHeaders();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void calculateMaxColumns()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; e : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#60; e.size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMAX = e.size();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void resizeRows()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (auto&amp; e : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#62; e.size()) e.resize(CMAX);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#62; h.size()) h.resize(CMAX);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void addRowNumbers()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m[r][0] = StringConverter::toString(r + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void calculateColumnWidths()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::vector&#60;size_t&#62; n(CMAX, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Инициализация ширинами заголовков</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t i = 0; i &#60; h.size() &amp;&amp; i &#60; CMAX; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;n[i] = h[i].size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Нахождение максимальных ширин</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (n[c] &#60; m[r][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;n[c] = m[r][c].size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Выравнивание столбцов</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (n[c] &#62; m[r][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m[r][c].resize(n[c], &#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Выравнивание заголовков</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (h[c].size() &#60; m[0][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;h[c].resize(m[0][c].size(), &#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void alignColumns() {} // Заглушка для совместимости с логикой</div><div class="code_line">&nbsp;&nbsp; &nbsp;void alignHeaders() {} // Заглушка для совместимости с логикой</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс для вывода таблицы</div><div class="code_line">class TablePrinter</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;TablePrinter(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: CMAX(cmax), m(data), h(header)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void print(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wstring line = createLine();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; line &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printHeader(o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39;\n&#39; &#60;&#60; line &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printRows(o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; line &#60;&#60; &#39;\n&#39; &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::wstring createLine()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wstring line;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;line += std::wstring(h[c].size() + 3, &#39;=&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return line;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void printHeader(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39; &#39; &#60;&#60; h[c] &#60;&#60; &quot; |&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void printRows(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; r : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; e : r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39; &#39; &#60;&#60; e &#60;&#60; &quot; |&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; o &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">// Основной класс таблицы</div><div class="code_line">class Tab</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;size_t CMAX = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Tab() = default;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; operator[](const size_t i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (i &#62;= m.size()) m.resize(i + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return *(m.begin() + i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;typename ... T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void head(T ... t)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(h.push_back(StringConverter::toString(t)), ...);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void formater()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TableFormatter formatter(CMAX, m, h);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;formatter.format();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;friend std::wostream&amp; operator&#60;&#60;(std::wostream&amp;, Tab&amp;);</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">std::wostream&amp; operator&#60;&#60;(std::wostream&amp; o, Tab&amp; t)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;t.formater();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TablePrinter printer(t.CMAX, t.m, t.h);</div><div class="code_line">&nbsp;&nbsp; &nbsp;printer.print(o);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return o;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">///----------------------------------------------------------------------------|</div><div class="code_line">/// Тест.</div><div class="code_line">///----------------------------------------------------------------------------:</div><div class="code_line">class TabTest</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void run()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ &nbsp; ///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Создаём табулятор. &nbsp; &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Tab tab;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Заголовок. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab.head(L&quot;NN&quot;, L&quot;Первый&quot;, L&quot;Второй&quot;, 3);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Как угодно заполняем. |</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[1][1] = 2020;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[2][2] = L&quot;qwerty&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[4][3] = 3.14;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[0][4] = L&quot;Яша + Оля&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Вывод на экран/файл. &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wcout &#60;&#60; tab;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[2][4] = 2025;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[3][5] = L&#39;A&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wcout &#60;&#60; tab;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">///----------------------------------------------------------------------------|</div><div class="code_line">/// Старт.</div><div class="code_line">///----------------------------------------------------------------------------:</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(0, &quot;ru&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TabTest test;</div><div class="code_line">&nbsp;&nbsp;test.run();</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929879</guid>
        <pubDate>Fri, 10 Oct 2025 19:33:13 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929879</link>
        <description><![CDATA[Qraizer: Например, класс TabTest не содержит inline методов, поэтому определён правильно: метод TabTest::run() только объявлен. Но определение в .cpp должно быть только для метода:<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">namespace school</div><div class="code_line">{</div><div class="code_line">/* ... */</div><div class="code_line">&nbsp;&nbsp; &nbsp;///----------------------------------------------------------------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp;/// Тест.</div><div class="code_line">&nbsp;&nbsp; &nbsp;///----------------------------------------------------------------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void TabTest::run()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</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>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-10T19:35:35+00:00">10.10.25, 19:35</time></span></span><br>
P.S. Если ранее писал на Джаве (Шарпы, мэйби?), то в Плюсах так тоже можно, но не приветствуется. Только в отдельных случаях]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929878</guid>
        <pubDate>Fri, 10 Oct 2025 19:31:40 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929878</link>
        <description><![CDATA[sharky72: Ну я же не вижу где находится ваш класс Tab и судя по ошибке его нет в данном namespace. Не говоря о том что по скрину MyString и MyVector, StringConverter определены как в .h так и в .cpp поэтому ошибка двойного определения С2011<br>Не надо выкладывать скрины. Либо выкладывайте проект, либо заворачивайте в /code. С телефона смотреть не всегда удобно, не говоря о том что скрин показывает только часть кода.<br><br>Как должны выглядеть объявление и реализация я вам написал.]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929877</guid>
        <pubDate>Fri, 10 Oct 2025 19:29:03 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929877</link>
        <description><![CDATA[Qraizer: Так не нужно же дублировать определения. Отдельно, в .cpp, определять нужно только то, что в .h было только объявлено. (В свою очередь в .h определять нужно типы и inline, остальное должно быть только объявлено, а определено в .cpp)]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929876</guid>
        <pubDate>Fri, 10 Oct 2025 18:41:37 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929876</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929875'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-10T18:29:02+00:00">10.10.25, 18:29</time></span><div class='quote '></div></div><br>
Как так? А это что?&quot;:<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">namespace school</div><div class="code_line">{</div><div class="code_line">&nbsp;// ...</div><div class="code_line">}</div></ol></div></div></div></div><br>
<span class="b-attach" data-size="71112" data-hits="309" data-attach-id="67422" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=67422' title='Скачать файл' target='_blank'>rab2.png</a> (, : 309)
		</span>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929875</guid>
        <pubDate>Fri, 10 Oct 2025 18:29:02 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929875</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929874'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-10T18:26:50+00:00">10.10.25, 18:26</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929873'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-10T18:19:44+00:00">10.10.25, 18:19</time></span><div class='quote '>Вам же Qraizer сказал.<br>
Объявление и реализация должны быть в одном namespace.</div></div><br>
А у меня разве не в одном namespace?</div></div><br>
Неа. Я не вижу namespace school {) в cpp и внутри все что должно ему принадлежать <br>
<br>
.h<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">namespace mynamespace</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;class classname</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; void method1();</div><div class="code_line">&nbsp;&nbsp; &nbsp; void method2();</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;void function();</div><div class="code_line">}</div></ol></div></div></div></div><br>
.cpp<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">namespace mynamespace</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;void classname::method1(){}</div><div class="code_line">&nbsp;&nbsp;void classname::method2(){}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;void function(){}</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929874</guid>
        <pubDate>Fri, 10 Oct 2025 18:26:50 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929874</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929873'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-10T18:19:44+00:00">10.10.25, 18:19</time></span><div class='quote '>Вам же Qraizer сказал.<br>
Объявление и реализация должны быть в одном namespace.</div></div><br>
А у меня разве не в одном namespace?]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929873</guid>
        <pubDate>Fri, 10 Oct 2025 18:19:44 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929873</link>
        <description><![CDATA[sharky72: Вам же Qraizer сказал.<br>Объявление и реализация должны быть в одном namespace.<br>в cpp файле так же должно быть указано<br>namespace school {<br>  Тут должна быть вся реализация и объявления классов<br>}<br><br>Зы. Таки все объявления классов StringConverter, MyString, MyVector и т.д. я бы перенес в .h Выглядит очень некрасиво.]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929872</guid>
        <pubDate>Fri, 10 Oct 2025 17:50:19 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929872</link>
        <description><![CDATA[DDim1000: Я разместил код в прострастве имен school, и у меня вылезло куча ошибо. Почемиу?<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">#include &quot;DataTable.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">namespace school</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;#define l(v) std::wcout &#60;&#60; #v &#60;&#60; &quot; = &quot; &#60;&#60; (v) &#60;&#60; &quot;\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Класс-обертка для преобразования в строку</div><div class="code_line">&nbsp;&nbsp; &nbsp;class StringConverter</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;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static std::wstring toString(T val)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return (std::wostringstream() &#60;&#60; val).str();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Класс для работы со строками</div><div class="code_line">&nbsp;&nbsp; &nbsp;class MyString : public std::wstring</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;MyString() : std::wstring() {}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyString(std::wstring &nbsp; &nbsp;s) : std::wstring(s) {}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyString(const wchar_t* s) : std::wstring(s) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyString&amp; operator=(const std::wstring&amp; a)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return &nbsp; *static_cast&#60;std::wstring*&#62;(this) = a, *this;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyString&amp; operator=(const T a)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return *this = StringConverter::toString(a);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&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;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;class MyVector : public std::vector&#60;T&#62;</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;T&amp; operator[](const size_t i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (i &#62;= this-&#62;size()) this-&#62;resize(i + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return *(this-&#62;begin() + i);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void resize(size_t new_size, const T&amp; value = T())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::vector&#60;T&#62;::resize(new_size, value);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Класс для форматирования таблицы</div><div class="code_line">&nbsp;&nbsp; &nbsp;class TableFormatter</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TableFormatter(size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: m(data), h(header), CMAX(cmax)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void format()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;calculateMaxColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resizeRows();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addRowNumbers();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;calculateColumnWidths();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alignColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alignHeaders();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void calculateMaxColumns()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; e : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#60; e.size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMAX = e.size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void resizeRows()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (auto&amp; e : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#62; e.size()) e.resize(CMAX);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#62; h.size()) h.resize(CMAX);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void addRowNumbers()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m[r][0] = StringConverter::toString(r + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void calculateColumnWidths()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::vector&#60;size_t&#62; n(CMAX, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Инициализация ширинами заголовков</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t i = 0; i &#60; h.size() &amp;&amp; i &#60; CMAX; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;n[i] = h[i].size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Нахождение максимальных ширин</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (n[c] &#60; m[r][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;n[c] = m[r][c].size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Выравнивание столбцов</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (n[c] &#62; m[r][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m[r][c].resize(n[c], &#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Выравнивание заголовков</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (h[c].size() &#60; m[0][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;h[c].resize(m[0][c].size(), &#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void alignColumns() {} // Заглушка для совместимости с логикой</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void alignHeaders() {} // Заглушка для совместимости с логикой</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Класс для вывода таблицы</div><div class="code_line">&nbsp;&nbsp; &nbsp;class TablePrinter</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TablePrinter(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: CMAX(cmax), m(data), h(header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void print(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::wstring line = createLine();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; line &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printHeader(o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39;\n&#39; &#60;&#60; line &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printRows(o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; line &#60;&#60; &#39;\n&#39; &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wstring createLine()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::wstring line;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;line += std::wstring(h[c].size() + 3, &#39;=&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return line;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void printHeader(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39; &#39; &#60;&#60; h[c] &#60;&#60; &quot; |&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void printRows(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; r : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; e : r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39; &#39; &#60;&#60; e &#60;&#60; &quot; |&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; o &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</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;class Tab</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t CMAX = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Tab() = default;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; operator[](const size_t i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (i &#62;= m.size()) m.resize(i + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return *(m.begin() + i);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename ... T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void head(T ... t)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(h.push_back(StringConverter::toString(t)), ...);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void formater()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TableFormatter formatter(CMAX, m, h);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;formatter.format();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;friend std::wostream&amp; operator&#60;&#60;(std::wostream&amp;, Tab&amp;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::wostream&amp; operator&#60;&#60;(std::wostream&amp; o, Tab&amp; t)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;t.formater();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TablePrinter printer(t.CMAX, t.m, t.h);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printer.print(o);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return o;</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;/// Тест.</div><div class="code_line">&nbsp;&nbsp; &nbsp;///----------------------------------------------------------------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp;class TabTest</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;void run()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{ &nbsp; ///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Создаём табулятор. &nbsp; &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Tab tab;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Заголовок. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tab.head(L&quot;NN&quot;, L&quot;Первый&quot;, L&quot;Второй&quot;, 3);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Как угодно заполняем. |</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tab[1][1] = 2020;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tab[2][2] = &quot;qwerty&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tab[4][3] = 3.14;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tab[0][4] = L&quot;Яша + Оля&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Вывод на экран/файл. &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::wcout &#60;&#60; tab;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tab[2][4] = 2025;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tab[3][5] = &#39;A&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::wcout &#60;&#60; tab;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">};</div></ol></div></div></div></div><br>
<span class="b-attach" data-size="71999" data-hits="321" data-attach-id="67421" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=67421' title='Скачать файл' target='_blank'>rab.png</a> (, : 321)
		</span>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929871</guid>
        <pubDate>Fri, 10 Oct 2025 17:23:56 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929871</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-10-10T14:01:47+00:00">10.10.25, 14:01</time></span><div class='quote '>Ну так класс TabTest объявлен в пространстве имён school. Тот, что определён в глобальном, то другой, получается, они не совпадают.</div></div><br>
То есть, и заголовки и реализаци дожны находиться в одном прострастве имен?]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929865</guid>
        <pubDate>Fri, 10 Oct 2025 14:01:47 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929865</link>
        <description><![CDATA[Qraizer: Ну так класс TabTest объявлен в пространстве имён school. Тот, что определён в глобальном, то другой, получается, они не совпадают.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929864</guid>
        <pubDate>Fri, 10 Oct 2025 13:50:50 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929864</link>
        <description><![CDATA[DDim1000: Здравствуйте&#33;<br>
У меня снова возникла ошибка: &quot;ссылка на неразрешенный внешний символ&quot;, другом проекте.<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">ссылка на неразрешенный внешний символ &quot;public: void __cdecl school::TabTest::run(void)&quot; (?run@TabTest@school@@QEAAXXZ) в функции main.</span><br>
Еще такая ошибка:<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">неразрешенных внешних элементов: 1</span><br>
<br>
h-file:<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">#pragma once</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;sstream&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">#include &#60;locale&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">namespace school {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Класс-обертка для преобразования в строку</div><div class="code_line">&nbsp;&nbsp; &nbsp;class StringConverter</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;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static std::wstring toString(T val);</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;class MyString : public std::wstring</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;MyString();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyString(std::wstring s);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyString(const wchar_t* s);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyString&amp; operator=(const std::wstring&amp; a);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyString&amp; operator=(const T a);</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;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;class MyVector : public std::vector&#60;T&#62;</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;T&amp; operator[](const size_t i);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void resize(size_t new_size, const T&amp; value = T());</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;class TableFormatter</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TableFormatter(size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void format();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void calculateMaxColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void resizeRows();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void addRowNumbers();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void calculateColumnWidths();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void alignColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void alignHeaders();</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;class TablePrinter</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TablePrinter(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void print(std::wostream&amp; o);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wstring createLine();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void printHeader(std::wostream&amp; o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void printRows(std::wostream&amp; o);</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;class Tab</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t CMAX = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Tab();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; operator[](const size_t i);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;template&#60;typename ... T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void head(T ... t);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void formater();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;friend std::wostream&amp; operator&#60;&#60;(std::wostream&amp; o, Tab&amp; t);</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;std::wostream&amp; operator&#60;&#60;(std::wostream&amp; o, Tab&amp; t);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Класс для тестирования</div><div class="code_line">&nbsp;&nbsp; &nbsp;class TabTest</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;void run();</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">} // namespace school</div></ol></div></div></div></div><br>
<br>
cpp-file:<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">#include &quot;DataTable.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">#define l(v) std::wcout &#60;&#60; #v &#60;&#60; &quot; = &quot; &#60;&#60; (v) &#60;&#60; &quot;\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс-обертка для преобразования в строку</div><div class="code_line">class StringConverter</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;static std::wstring toString(T val)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return (std::wostringstream() &#60;&#60; val).str();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс для работы со строками</div><div class="code_line">class MyString : public std::wstring</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString() : std::wstring() {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString(std::wstring &nbsp; &nbsp;s) : std::wstring(s) {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString(const wchar_t* s) : std::wstring(s) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString&amp; operator=(const std::wstring&amp; a)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return &nbsp; *static_cast&#60;std::wstring*&#62;(this) = a, *this;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;typename T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyString&amp; operator=(const T a)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return *this = StringConverter::toString(a);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс для работы с вектором</div><div class="code_line">template&#60;typename T&#62;</div><div class="code_line">class MyVector : public std::vector&#60;T&#62;</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;T&amp; operator[](const size_t i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (i &#62;= this-&#62;size()) this-&#62;resize(i + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return *(this-&#62;begin() + i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void resize(size_t new_size, const T&amp; value = T())</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::vector&#60;T&#62;::resize(new_size, value);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс для форматирования таблицы</div><div class="code_line">class TableFormatter</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;TableFormatter(size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: m(data), h(header), CMAX(cmax)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void format()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;calculateMaxColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;resizeRows();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;addRowNumbers();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;calculateColumnWidths();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;alignColumns();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;alignHeaders();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void calculateMaxColumns()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; e : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#60; e.size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMAX = e.size();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void resizeRows()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (auto&amp; e : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#62; e.size()) e.resize(CMAX);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (CMAX &#62; h.size()) h.resize(CMAX);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void addRowNumbers()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m[r][0] = StringConverter::toString(r + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void calculateColumnWidths()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::vector&#60;size_t&#62; n(CMAX, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Инициализация ширинами заголовков</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t i = 0; i &#60; h.size() &amp;&amp; i &#60; CMAX; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;n[i] = h[i].size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Нахождение максимальных ширин</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (n[c] &#60; m[r][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;n[c] = m[r][c].size();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Выравнивание столбцов</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t r = 0; r &#60; m.size(); ++r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (n[c] &#62; m[r][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m[r][c].resize(n[c], &#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Выравнивание заголовков</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (h[c].size() &#60; m[0][c].size())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;h[c].resize(m[0][c].size(), &#39; &#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void alignColumns() {} // Заглушка для совместимости с логикой</div><div class="code_line">&nbsp;&nbsp; &nbsp;void alignHeaders() {} // Заглушка для совместимости с логикой</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Класс для вывода таблицы</div><div class="code_line">class TablePrinter</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;size_t&amp; CMAX;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;TablePrinter(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t&amp; cmax,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62;&amp; data,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; header)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: CMAX(cmax), m(data), h(header)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void print(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wstring line = createLine();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; line &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printHeader(o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39;\n&#39; &#60;&#60; line &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printRows(o);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; line &#60;&#60; &#39;\n&#39; &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::wstring createLine()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wstring line;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;line += std::wstring(h[c].size() + 3, &#39;=&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return line;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void printHeader(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t c = 0; c &#60; CMAX; ++c)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39; &#39; &#60;&#60; h[c] &#60;&#60; &quot; |&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void printRows(std::wostream&amp; o)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; r : m)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (const auto&amp; e : r)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o &#60;&#60; &#39; &#39; &#60;&#60; e &#60;&#60; &quot; |&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; o &#60;&#60; &#39;\n&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">// Основной класс таблицы</div><div class="code_line">class Tab</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyVector&#60;MyString&#62;&#62; m;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62; h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;size_t CMAX = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Tab() = default;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyVector&#60;MyString&#62;&amp; operator[](const size_t i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (i &#62;= m.size()) m.resize(i + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return *(m.begin() + i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;typename ... T&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void head(T ... t)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(h.push_back(StringConverter::toString(t)), ...);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void formater()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TableFormatter formatter(CMAX, m, h);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;formatter.format();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;friend std::wostream&amp; operator&#60;&#60;(std::wostream&amp;, Tab&amp;);</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">std::wostream&amp; operator&#60;&#60;(std::wostream&amp; o, Tab&amp; t)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;t.formater();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TablePrinter printer(t.CMAX, t.m, t.h);</div><div class="code_line">&nbsp;&nbsp; &nbsp;printer.print(o);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return o;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">///----------------------------------------------------------------------------|</div><div class="code_line">/// Тест.</div><div class="code_line">///----------------------------------------------------------------------------:</div><div class="code_line">class TabTest</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void run()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ &nbsp; ///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Создаём табулятор. &nbsp; &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Tab tab;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Заголовок. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab.head(L&quot;NN&quot;, L&quot;Первый&quot;, L&quot;Второй&quot;, 3);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Как угодно заполняем. |</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[1][1] = 2020;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[2][2] = &quot;qwerty&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[4][3] = 3.14;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[0][4] = L&quot;Яша + Оля&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// Вывод на экран/файл. &nbsp;|</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;///-----------------------:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wcout &#60;&#60; tab;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[2][4] = 2025;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tab[3][5] = &#39;A&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::wcout &#60;&#60; tab;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div></ol></div></div></div></div><br>
<br>
source.cpp:<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">#include &quot;DataTable.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace school;</div><div class="code_line">&nbsp;</div><div class="code_line">///----------------------------------------------------------------------------|</div><div class="code_line">/// Старт.</div><div class="code_line">///----------------------------------------------------------------------------:</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;setlocale(0, &quot;&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TabTest test;</div><div class="code_line">&nbsp;&nbsp;test.run();</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929503</guid>
        <pubDate>Sun, 05 Oct 2025 16:09:49 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929503</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929495'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-04T10:44:09+00:00">04.10.25, 10:44</time></span><div class='quote '><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">    system(&quot;chcp 65001&quot;);</div></ol></div></div></div></div></div></div>Не надо system(). Я ж упомянул программное средство:<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">SetConsoleOutputCP(65001);</div></ol></div></div></div></div>]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929500</guid>
        <pubDate>Sat, 04 Oct 2025 21:50:15 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929500</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929493'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-04T07:04:38+00:00">04.10.25, 07:04</time></span><div class='quote '>Просто ты не распознал всей вкусности юникода&#33;</div></div>Ещё как вкусил. Главная проблема юникода не в много...символьности (UTF-16 тоже имеет суррогатные пары). Главная его проблема в том, что вместо того, чтобы разобраться с зоопарком мультикультурности и устранить связанные с ним неудобства, он его стандартизировал и т.с. эти неудобства узаконил.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929493'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-04T07:04:38+00:00">04.10.25, 07:04</time></span><div class='quote '>Да, пришли времена когда печатаемый символ может/должен занимать более одного байта</div></div>Их никогда и не было. Но люди умели писать код в многобайтных кодировках. Проблема не в самой многобайтовости, а в отсутствии абстракции &quot;символ&quot;. Это уже не к юникоду, конечно, а к std. Если уж ввели char8_t, префикс u8 и класс std::u8string, почему они по-прежнему отражают абстракцию &quot;байт&quot;?<br>
Мне несложно написать свои алгоритмы и функции для &quot;символов&quot; и таскать их из проекта в проект. Более того, в C++11 сделали некий шаг в эту сторону, предоставив фасеты и классы. Пусть шаг и неудобный, т.к. отделён от самой абстракции &quot;символ&quot;, но вот прошло 6 лет, а воз не то что и ныне там, а этот шаг в принципе отменён, и ничего не предоставлено взамен. Причём формулировка причины, типа, &quot;ой, мы ниасилили сделать это безопасно с точки зрения обработки апшибков&quot; и &quot;ай-яй-яй, эти фасеты локале-независимы, поэтому им нечего делать в &lt;locale&gt;&quot;. Оттакъот. Юникоду 35 лет, к слову, и &lt;locale&gt; появился аж в C++98, в первой редакции Стандарта.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929499</guid>
        <pubDate>Sat, 04 Oct 2025 19:06:34 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929499</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929495'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-04T10:44:09+00:00">04.10.25, 10:44</time></span><div class='quote '></div></div><br>
<br>
Вы вкрячили непонятно что внутри namespace. Это и ни объявление функции, ни её реализация. Поэтому компилятор вас и не понял.<br>
system() или SetConsoleOutputCP() надо вызывать в main(). В добавок system() вам выдаст &quot;мусор&quot; в консоль &quot;Active codepage xxxx&quot;, потому что это запуск команды cmd. Тогда уж system(&quot;chcp 65001 &gt;nul&quot;).]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929495</guid>
        <pubDate>Sat, 04 Oct 2025 10:44:09 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929495</link>
        <description><![CDATA[DDim1000: Подскажите, пожалуйста, почему ошибка?:<br>
<strong class='tag-b'>это объявление не содержит класс хранения или спецификатор типа. Ст. 15.</strong><br>
На 15 ст. находится вызов функции system(&quot;chcp 65001&quot;);.<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">#include &quot;MySQLConnection.h&quot;</div><div class="code_line">#include &#60;cstdlib&#62; &nbsp; // system()</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;memory&#62;</div><div class="code_line">#include &#60;mysql_driver.h&#62;</div><div class="code_line">#include &#60;mysql_connection.h&#62;</div><div class="code_line">#include &#60;cppconn/driver.h&#62;</div><div class="code_line">#include &#60;cppconn/exception.h&#62;</div><div class="code_line">#include &#60;cppconn/resultset.h&#62;</div><div class="code_line">#include &#60;cppconn/statement.h&#62;</div><div class="code_line">#include &#60;cppconn/prepared_statement.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">namespace school</div><div class="code_line">{ &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;system(&quot;chcp 65001&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;MySQLConnection::MySQLConnection(const std::string&amp; host, int port,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;const std::string&amp; user, const std::string&amp; password,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;const std::string&amp; database) {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::string connectionString = &quot;tcp://&quot; + host + &quot;:&quot; + std::to_string(port);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;connection.reset(driver-&#62;connect(connectionString, user, password));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Настройка кодировки UTF-8</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::unique_ptr&#60;sql::Statement&#62; stmt(connection-&#62;createStatement());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;stmt-&#62;execute(&quot;SET NAMES &#39;utf8&#39;&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;stmt-&#62;execute(&quot;SET CHARACTER SET utf8&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;connection-&#62;setSchema(database);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void MySQLConnection::executeQuery(const std::string&amp; query) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::unique_ptr&#60;sql::Statement&#62; stmt(connection-&#62;createStatement());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::unique_ptr&#60;sql::ResultSet&#62; res(stmt-&#62;executeQuery(query));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;while (res-&#62;next()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Обработка результатов</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cout &#60;&#60; &quot;Результат: &quot; &#60;&#60; res-&#62;getString(1) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool MySQLConnection::isConnected() {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return connection.get() != nullptr &amp;&amp; !connection-&#62;isClosed();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929494</guid>
        <pubDate>Sat, 04 Oct 2025 07:16:47 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929494</link>
        <description><![CDATA[Majestio: И есчо ... што-то тут не все гладко, я не поленился и затестил в студии:<br>
<span class="b-attach" data-size="11336" data-hits="152" data-attach-id="67406" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=67406' title='Скачать файл' target='_blank'>Screenshot_1.png</a> (, : 152)
		</span><br>
Модификатор u8 есть, но такое ощущение нас рать, и что идет вывод win1251-&gt;cp866]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929493</guid>
        <pubDate>Sat, 04 Oct 2025 07:04:38 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929493</link>
        <description><![CDATA[Majestio: Просто ты не распознал всей вкусности юникода&#33;<br>Да, пришли времена когда печатаемый символ может/должен занимать более одного байта. Смирись с этим, или проиграешь&#33;&#33;&#33; ;)]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929492</guid>
        <pubDate>Sat, 04 Oct 2025 04:27:11 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929492</link>
        <description><![CDATA[Qraizer: <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">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;locale&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::string str = u8&quot;Хеллоу, уорлд!&quot;;</div><div class="code_line">&nbsp;&nbsp;std::locale locRusUTF8(&quot;russian.utf8&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;std::cout.imbue(locRusUTF8);</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; str &#60;&#60; std::endl;</div><div class="code_line">}</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">D:\Work\DelMe&#62;chcp 65001</div><div class="code_line">Active code page: 65001</div><div class="code_line">&nbsp;</div><div class="code_line">D:\Work\DelMe&#62;delMe.exe</div><div class="code_line">Хеллоу, уорлд!</div><div class="code_line">&nbsp;</div><div class="code_line">D:\Work\DelMe&#62;</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-04T04:48:27+00:00">04.10.25, 04:48</time></span></span><br>
UTF-8 вам в одну руку и флаг в другую, уважаемые уважатели суррогатных байт. А я вот не люблю, когда не могу сделать<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">std::replace(str.begin(), str.end(), u8&#39;л&#39;, u8&#39;l&#39;);</div></ol></div></div></div></div><br>
когда str.length() возвращает 25 вместо правильного 14 и тем более когда str[6] вместо u8&#39;,&#39; возвращает мне некое &#39;&#092;xD0&#39;]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929491</guid>
        <pubDate>Sat, 04 Oct 2025 03:08:52 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929491</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929490'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-10-03T19:55:35+00:00">03.10.25, 19:55</time></span><div class='quote '>Команда в консоли &quot;chcp 65001&quot;, програмно SetConsoleOutputCP(), конкретно в Плюсах std::locale().</div></div><br>
<strong class='tag-b'>Qraizer</strong>, вот скажи, зачем ты так издеваешься над человеком этим своим советом? &gt;:(<br>
<br>
С каких это пор виндовая стандартная консоль дружила с многобайтовыми кодировками? Не, ну серьёзно. Ну покажи код, как в наш век гомоглобальной экзистенции модуляции синтеза, на примере вывода UTF-8 строк, сделать печать прямым выводом, без перекодировки в cp866 и вывести юникод в эту всратую консоль, чисто одной сменой локали...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929490'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-10-03T19:55:35+00:00">03.10.25, 19:55</time></span><div class='quote '>Проще свои сырцы уже представлять компилятору к нужной кодировке.</div></div><br>
Дело не в одних сырцах. Есть ещё и данные из БД MySQL, которые туда нужно вписать, и оттуда ещё и читать. И я тебе, как родному, скажу: лучше это будет, если таблицы будут там созданы в кодировке <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">utf8mb4</span></span> вместе с современными правилами сортировки (&quot;collation&quot; — так это называется на языке западных кровавых империалистов) <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">utf8mb4_unicode_520_ci</span></span>. Вот тогда, и именно тогда, и только тогда — никакая внешняя индустриальная интервенция (особенно китайская) нам не страшна&#33;&#33;&#33; Вот именно тогда мы будем готовы кодить в жёстком стиле, по всем фронтам, но соблюдая современные международные нормы. Свободу восьминогам&#33; :victory:]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929490</guid>
        <pubDate>Fri, 03 Oct 2025 19:55:35 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929490</link>
        <description><![CDATA[Qraizer: Команда в консоли &quot;chcp 65001&quot;, програмно SetConsoleOutputCP(), конкретно в Плюсах std::locale(). Проще свои сырцы уже представлять компилятору к нужной кодировке. И нужен соответствующий шрифт, естественно.<br>Только вот вопрос: а тебе этот UTF-8 вообще зачем? Многобайтная кодировка – это жестокая боль, что б тебе не советовали из никсов.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929484</guid>
        <pubDate>Fri, 03 Oct 2025 15:00:39 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929484</link>
        <description><![CDATA[Majestio: Четвертый вариант. Использовать либу boost  ;) <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">#include &#60;boost/locale.hpp&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string utf8_str = u8&quot;Привет, васьминогам!&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; boost::locale::conv::from_utf(utf8_str, &quot;CP866&quot;) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929483</guid>
        <pubDate>Fri, 03 Oct 2025 14:45:58 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929483</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929478'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-03T14:08:49+00:00">03.10.25, 14:08</time></span><div class='quote '>Второй вариант - писать свою функцию преобразования перед печатью на стандартный терминал со стандартной кодировкой cp866. Должно получиться что-то типа:</div></div><br>
Третий вариант. Использовать WSL или вовсе перейти на Linux. Там давно уже UTF8 и нету этих приколов.]]></description>
        <author>macomics</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929478</guid>
        <pubDate>Fri, 03 Oct 2025 14:08:49 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929478</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929474'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-10-03T12:50:09+00:00">03.10.25, 12:50</time></span><div class='quote '>Возник вопрос: как сделать, чтобы русcкие буквы отображались корректно?</div></div><br>
Лучший вариант (но я еще сам не пробовал) - использовать <a class='tag-url' href='https://conemu.github.io' target='_blank'>ConEmu</a> в качестве терминала, настроенным на UTF-8 по умолчанию + в студии использовать расширение <a class='tag-url' href='https://marketplace.visualstudio.com/items?itemName=DavidRoller.ConEmuIntegration' target='_blank'>ConEmu Integration 2017</a>. Подчёркиваю, я сам этим пока не пользовался, но интересно, и я скоро сам попробую. В этом большой бонус - полноценный терминал с UTF-8 кодировкой.<br>
<br>
Второй вариант - писать свою функцию преобразования перед печатью на стандартный терминал со стандартной кодировкой cp866. Должно получиться что-то типа:<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">#include &#60;string&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;windows.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">std::string utf8_to_cp866(const std::string&amp; utf8_str) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;// 1. UTF-8 -&#62; UTF-16</div><div class="code_line">&nbsp;&nbsp; &nbsp;int wide_size = MultiByteToWideChar(CP_UTF8, 0, utf8_str.c_str(), -1, nullptr, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::wstring wide_str(wide_size, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;MultiByteToWideChar(CP_UTF8, 0, utf8_str.c_str(), -1, &amp;wide_str[0], wide_size);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// 2. UTF-16 -&#62; cp866</div><div class="code_line">&nbsp;&nbsp; &nbsp;int cp866_size = WideCharToMultiByte(866, 0, wide_str.c_str(), -1, nullptr, 0, nullptr, nullptr);</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string cp866_str(cp866_size, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;WideCharToMultiByte(866, 0, wide_str.c_str(), -1, &amp;cp866_str[0], cp866_size, nullptr, nullptr);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return cp866_str;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string utf8_str = u8&quot;Привет, ворлд!&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string cp866_str = utf8_to_cp866(utf8_str);</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; cp866_str &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><br>
С кириллицей должно прокатить. Но, сам понимаешь, символы юникода, которым нет соответствия в cp866, выведены не будут.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929474</guid>
        <pubDate>Fri, 03 Oct 2025 12:50:09 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929474</link>
        <description><![CDATA[DDim1000: Здравствуйте&#33;<br>
Возник вопрос: как сделать, чтобы русcкие буквы отображались корректно?<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">Подключение установлено успешно!</div><div class="code_line">|1|Р&quot;РчР?РёС?|</div><div class="code_line">|2|Р&#62;С&#39;Р?С?|</div></ol></div></div></div></div>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929249</guid>
        <pubDate>Mon, 29 Sep 2025 17:49:55 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929249</link>
        <description><![CDATA[DDim1000: Заработало&#33;&#33;&#33; <br>
Большое спасибо за помощь&#33;<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">Подключение установлено успешно!</div><div class="code_line">Результат: 10.4.32-MariaDB</div></ol></div></div></div></div>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929248</guid>
        <pubDate>Mon, 29 Sep 2025 17:09:08 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929248</link>
        <description><![CDATA[sharky72: надо было скопировать полностью папку plugin. Он ищет именно в папке.<br>
Почему так - надо спрашивать у разрабов MySQL connector<br>
<br>
ЗЫ. Qraizer таки был прав использовть релизную dll для дебага нельзя. Посыпаю голову пеплом.<br>
<br>
<a class='tag-url' href='https://dev.mysql.com/doc/dev/connector-cpp/latest/usage.html' target='_blank'>https://dev.mysql.com/doc/dev/connector-cpp...test/usage.html</a><br>
<strong class='tag-b'>On Windows it is not possible to mix code built in release and debug modes.</strong><br>
<br>
И там же по поводу папки plugin (можно решить через переменную среды). В общем в доках все есть. Нужно только их прочитать.<br>
<br>
MySQL client library plugins<br>
The classic API is implemented using the MySQL client library which might need to load plugins during some operations (mainly during authentication). In case of system-wide installation the required plugins (and their dependencies) should be also installed system-wide and available at the default location where the client library looks for them.<br>
<br>
If however Connector/C++ was installed to a local directory the plugins (and their dependencies) are installed together with the connector at &#036;{mysql-concpp_DIR}/lib64/plugins but the client library will not know how to find them. To fix this pass their location as PLUGIN_DIR connection option that is recognized by the classic API.<br>
<br>
Note<br>
Client library plugins must be installed and PLUGIN_DIR must be correctly set (if needed) on the target host on which the application is run. This might be different from the environment in which application was built. Note that client library plugins are loaded dynamically at run-time and they are not required during build process.<br>
Client library plugins can have further dependencies. For example authentication_kerberos_client plugin depends on Kerberos libraries and when used these libraries must be found on the target system.<br>
If client library plugins are not available the connector will still work correctly provided that it does not invoke any functionality that requires these plugins. For example if the server to which it connects does not have any accounts that use advanced authentication mechanisms that would require use of client library authentication plugins.<br>
In case of a local installation the mysql-concpp module sets the MYSQL_CONCPP_PLUGIN_DIR variable to the location where bundled client library plugins (and their dependencies) are located inside connector installation directory. Depending on the deployment strategy this information can be used, for example, to bundle the available plugins with the final application. In case of system-wide installation the plugins are not bundled with the connector and MYSQL_CONCPP_PLUGIN_DIR variable is not set.]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929225</guid>
        <pubDate>Mon, 29 Sep 2025 11:49:16 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929225</link>
        <description><![CDATA[DDim1000: Переключил на Release, теперь такая ошибка:<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">MySQL Error: Authentication plugin &#39;mysql_native_password&#39; cannot be loaded: Не найден указанный модуль.</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">D:\Programming\VS\source\repos\school\x64\Release\school.exe (процесс 7780) завершил работу с кодом 0 (0x0).</div><div class="code_line">Нажмите любую клавишу, чтобы закрыть это окно:</div></ol></div></div></div></div><br>
<br>
Скопировал файл mysql_native_password.dll в папку с exe-файлом, но ошибка осталась.]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929201</guid>
        <pubDate>Mon, 29 Sep 2025 06:54:23 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929201</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929192'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-27T18:18:52+00:00">27.09.25, 18:18</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929190'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-27T17:51:05+00:00">27.09.25, 17:51</time></span><div class='quote '>А вы все сделали как вам советовали?<br>
</div></div><br>
Когда я преключаю на Release, сразу появляются куча ошибок.<br>
<br>
<a class='tag-url' href='https://disk.yandex.ru/i/JL2VqnRFCuZPYA' target='_blank'>https://disk.yandex.ru/i/JL2VqnRFCuZPYA</a></div></div><br>
Ну вам же Qraizer написал что для Release так же НУЖНО настроить пути и библиотеки]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929200</guid>
        <pubDate>Sun, 28 Sep 2025 19:02:19 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929200</link>
        <description><![CDATA[macomics: Ну так вы же через командную строку используете localhost, а не dns или ip вашей сетевой на компьютере. Вот и проверяйте подключение к серверу по тем же параметрам в программе или через браузер, как я показал ранее.]]></description>
        <author>macomics</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929198</guid>
        <pubDate>Sun, 28 Sep 2025 16:15:55 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929198</link>
        <description><![CDATA[DDim1000: А вот через Комадную строку все работает.<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">Microsoft Windows [Version 10.0.19045.6332]</div><div class="code_line">(c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.</div><div class="code_line">&nbsp;</div><div class="code_line">C:\Windows\system32&#62;D:</div><div class="code_line">&nbsp;</div><div class="code_line">D:\&#62;cd Programming\Servers\xampp\mysql\bin</div><div class="code_line">&nbsp;</div><div class="code_line">D:\Programming\Servers\xampp\mysql\bin&#62;mysql.exe -h localhost --port=3306 -u root --password</div><div class="code_line">Enter password:</div><div class="code_line">Welcome to the MariaDB monitor. &nbsp;Commands end with ; or \g.</div><div class="code_line">Your MariaDB connection id is 9</div><div class="code_line">Server version: 10.4.32-MariaDB mariadb.org binary distribution</div><div class="code_line">&nbsp;</div><div class="code_line">Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.</div><div class="code_line">&nbsp;</div><div class="code_line">Type &#39;help;&#39; or &#39;\h&#39; for help. Type &#39;\c&#39; to clear the current input statement.</div><div class="code_line">&nbsp;</div><div class="code_line">MariaDB [(none)]&#62; SELECT NOW();</div><div class="code_line">+---------------------+</div><div class="code_line">| NOW() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</div><div class="code_line">+---------------------+</div><div class="code_line">| 2025-09-28 20:11:06 |</div><div class="code_line">+---------------------+</div><div class="code_line">1 row in set (0.000 sec)</div><div class="code_line">&nbsp;</div><div class="code_line">MariaDB [(none)]&#62;</div></ol></div></div></div></div>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929195</guid>
        <pubDate>Sun, 28 Sep 2025 03:47:47 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929195</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929193'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-09-28T01:46:14+00:00">28.09.25, 01:46</time></span><div class='quote '>К слову: 127.0.0.1 отнюдь не то же самое, что локальный IP.</div></div><br>
Именно потому, что это разные адреса я про это и сказал. Доступ по dns может отсутствовать из-за недоступности локального ip за роутером. Но вот если и с локальным ip будет тот же ответ, тогда значит, что mysql слушает только 127.0.0.1 (localhost, но только по v4).]]></description>
        <author>macomics</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929194</guid>
        <pubDate>Sun, 28 Sep 2025 02:18:01 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929194</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929190'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-27T17:51:05+00:00">27.09.25, 17:51</time></span><div class='quote '>ЗЫ. QTешников не спрашивали  Они вообще не в зуб ногой в кроме своего фреймворка </div></div><br>
<img class='tag-img' src='https://liubavyshka.ru/_ph/4/2/365609139.gif' alt='user posted image'>]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929193</guid>
        <pubDate>Sun, 28 Sep 2025 01:46:14 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929193</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929191'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-09-27T18:14:18+00:00">27.09.25, 18:14</time></span><div class='quote '>Хотя надо еще попробовать локальный ip компьютера вместо dns</div></div>К слову: 127.0.0.1 отнюдь не то же самое, что локальный IP.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929192</guid>
        <pubDate>Sat, 27 Sep 2025 18:18:52 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929192</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929190'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-27T17:51:05+00:00">27.09.25, 17:51</time></span><div class='quote '>А вы все сделали как вам советовали?<br>
1. Как сказал Qraizer запустить в релизе<br>
2. Как советовал я - поставить отладочную версию mysql сonnector и запустить в дебаге. Ибо похоже дебаг проект и релиз dll у вас не дружат.<br>
3. &quot;locolhost&quot; это что-то жутко интересное... ;) Интересно будет узнать что это.<br>
<br>
ЗЫ. QTешников не спрашивали ;) Они вообще не в зуб ногой в кроме своего фреймворка ;)</div></div><br>
Когда я преключаю на Release, сразу появляются куча ошибок.<br>
<br>
<a class='tag-url' href='https://disk.yandex.ru/i/JL2VqnRFCuZPYA' target='_blank'>https://disk.yandex.ru/i/JL2VqnRFCuZPYA</a>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929191</guid>
        <pubDate>Sat, 27 Sep 2025 18:14:18 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929191</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929189'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-27T16:03:38+00:00">27.09.25, 16:03</time></span><div class='quote '>Проверьте, нет ли опечаток в имени хоста xn--h-ptb9al4f.</div></div><br>
Это означает, что по внешнему ip порт не доступен (2 вариант). Значит проверяйте настройки сервера mysql. Скорее всего, к нему можно подключиться строго через 127.0.0.1:3306 <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-09-27T18:15:10+00:00">27.09.25, 18:15</time></span></span><br>
Хотя надо еще попробовать локальный ip компьютера вместо dns]]></description>
        <author>macomics</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929190</guid>
        <pubDate>Sat, 27 Sep 2025 17:51:05 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929190</link>
        <description><![CDATA[sharky72: А вы все сделали как вам советовали?<br>1. Как сказал Qraizer запустить в релизе<br>2. Как советовал я - поставить отладочную версию mysql сonnector и запустить в дебаге. Ибо похоже дебаг проект и релиз dll у вас не дружат.<br>3. &quot;locolhost&quot; это что-то жутко интересное... ;) Интересно будет узнать что это.<br><br>ЗЫ. QTешников не спрашивали ;) Они вообще не в зуб ногой в кроме своего фреймворка ;)]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929189</guid>
        <pubDate>Sat, 27 Sep 2025 16:03:38 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929189</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929188'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-09-27T15:31:44+00:00">27.09.25, 15:31</time></span><div class='quote '>Самое простое попробуйте. Наберите в браузере <a class='tag-url' href='http://HчЇФи:3306' target='_blank'>http://HчЇФи:3306</a> и посмотрите на ответ. Если сервер работает по этому адресу, тогда вы увидите ошибку в протоколе рукопожатия в браузере, а если нет -- страницу: нет доступа.<br>
<br>
В зависимости от этого и надо будет решать проблему.<br>
<br>
1) Ошибка в браузере есть т.е. сервер работает и отвечает. Тогда надо смотреть на то, чтобы отправляет ему коннектор.<br>
2) Ошибка в браузере, что нет сервера. Тогда проверяем настройки у mysql. Обычно там стоит строго 127.0.0.1:3306 и к нему не подключиться даже через v6</div></div><br>
Сообщние в браузере:<br>
<br>
<strong class='tag-b'>Не удается получить доступ к сайту<br>
Проверьте, нет ли опечаток в имени хоста xn--h-ptb9al4f.<br>
<br>
Если все правильно, воспользуйтесь инструментом &quot;Диагностика сетей Windows&quot;.<br>
DNS_PROBE_FINISHED_NXDOMAIN</strong>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929188</guid>
        <pubDate>Sat, 27 Sep 2025 15:31:44 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929188</link>
        <description><![CDATA[macomics: Самое простое попробуйте. Наберите в браузере <a class='tag-url' href='http://HчЇФи:3306' target='_blank'>http://HчЇФи:3306</a> и посмотрите на ответ. Если сервер работает по этому адресу, тогда вы увидите ошибку в протоколе рукопожатия в браузере, а если нет -- страницу: нет доступа.<br>
<br>
В зависимости от этого и надо будет решать проблему.<br>
<br>
1) Ошибка в браузере есть т.е. сервер работает и отвечает. Тогда надо смотреть на то, чтобы отправляет ему коннектор.<br>
2) Ошибка в браузере, что нет сервера. Тогда проверяем настройки у mysql. Обычно там стоит строго 127.0.0.1:3306 и к нему не подключиться даже через v6]]></description>
        <author>macomics</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929186</guid>
        <pubDate>Sat, 27 Sep 2025 11:47:54 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929186</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929112'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T18:31:43+00:00">25.09.25, 18:31</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T17:57:33+00:00">25.09.25, 17:57</time></span><div class='quote '>У меня возник вопрос: может я вообще делаю ни так? В общем, у меня есть задача: нужно подключиться к базе данных котора находиться на веб-хостинге. Дак, у меня правильная логика программы, или нет?</div></div><br>
В смысле работы с Mysql? Ну да. Создали коннектор. Задали строку соединения и логин/пароль. Вызвали метод соединения, обработали исключение в случае ошибки.<br>
Только я бы все таки не стал вызывать соединение из конструктора. Можно, но некрасиво из за того что там бросаются исключения в случае ошибок и isConnected() в данном случае не нужен ;) <br>
<br>
P.S. Я до сих пор использую dbForge Studio for MySql 9 (2020) пока она была бесплатной для некоммерческого использования</div></div><br>
Установил локальный сервер, установил Navicat Premium, создал БД. Но мая программа не может подключиться к базе данны, пишет: <strong class='tag-b'>MySQL Error: Unable to connect to HчЇФи:3306</strong><br>
<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">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;memory&#62;</div><div class="code_line">#include &#60;mysql_driver.h&#62;</div><div class="code_line">#include &#60;mysql_connection.h&#62;</div><div class="code_line">#include &#60;cppconn/driver.h&#62;</div><div class="code_line">#include &#60;cppconn/exception.h&#62;</div><div class="code_line">#include &#60;cppconn/resultset.h&#62;</div><div class="code_line">#include &#60;cppconn/statement.h&#62;</div><div class="code_line">#include &#60;cppconn/prepared_statement.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">//using namespace std;</div><div class="code_line">&nbsp;</div><div class="code_line">class MySQLConnection {</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::unique_ptr&#60;sql::Connection&#62; connection;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;MySQLConnection(const std::string&amp; host, int port,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;const std::string&amp; user, const std::string&amp; password,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;const std::string&amp; database) {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::string connectionString = &quot;tcp://&quot; + host + &quot;:&quot; + std::to_string(port);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;connection.reset(driver-&#62;connect(connectionString, user, password));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;connection-&#62;setSchema(database);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void executeQuery(const std::string&amp; query) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::unique_ptr&#60;sql::Statement&#62; stmt(connection-&#62;createStatement());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::unique_ptr&#60;sql::ResultSet&#62; res(stmt-&#62;executeQuery(query));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;while (res-&#62;next()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Обработка результатов</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cout &#60;&#60; &quot;Результат: &quot; &#60;&#60; res-&#62;getString(1) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool isConnected() {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return connection.get() != nullptr &amp;&amp; !connection-&#62;isClosed();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;setlocale(LC_ALL, &quot;Russian&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;try {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MySQLConnection db(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;locolhost&quot;, // host</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3306,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;root&quot;, // your_username</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;&quot;, // your_password</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;school&quot; // your_database</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (db.isConnected()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cout &#60;&#60; &quot;Подключение установлено успешно!&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db.executeQuery(&quot;SELECT VERSION()&quot;);</div><div class="code_line">&nbsp;&nbsp; &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;catch (sql::SQLException&amp; e) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::cerr &#60;&#60; &quot;MySQL Error: &quot; &#60;&#60; e.what() &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929176</guid>
        <pubDate>Fri, 26 Sep 2025 14:41:40 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929176</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929165'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-26T13:05:54+00:00">26.09.25, 13:05</time></span><div class='quote '>1130 - Host &#39;169...&#39; is not allowed to connect to this MySQL server</div></div><br>
1. Смотри есть ли права доступа у данного пользователя на подключение к конкретному хосту или к любому (в таблице mysql.user). Если нет - то дай права через grant all priveleges<br>
2. Проверь что mysql забинден на нужный интерфейс. Или слушает все. в bind-address = 0.0.0.0]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929175</guid>
        <pubDate>Fri, 26 Sep 2025 14:26:41 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929175</link>
        <description><![CDATA[Majestio: Кстати ... если у тебя проблемсы с MySQL-сервером, а они явно у тебя есть - рекомендую тебе просто ужасно-прекрасную софтину <a class='tag-url' href='https://ospanel.io' target='_blank'>Open Server</a>. Да, сия софтина обычно используется для web-разработок. Тем не менее, в её составе есть полноценные версии MySQL и PostgreSQL, практически готовые сразу после установки. Очень очень рекомендую. Сам пользую уже лет 10, и вааще доволен.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929172</guid>
        <pubDate>Fri, 26 Sep 2025 13:52:24 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929172</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929165'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-26T13:05:54+00:00">26.09.25, 13:05</time></span><div class='quote '>То есть, получатся, что, сам сервер не разрешает подключиться?</div></div><br>
Ну да, получается что так. Поработай с настройками сервера, постарайся получить коннект с помощью Navicat. И только после этого возвращайся к кодированию.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929165</guid>
        <pubDate>Fri, 26 Sep 2025 13:05:54 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929165</link>
        <description><![CDATA[DDim1000: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929110'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T18:10:08+00:00">25.09.25, 18:10</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T17:57:33+00:00">25.09.25, 17:57</time></span><div class='quote '>Дак, у меня правильная логика программы, или нет?</div></div><br>
Вроде бы и правильная ;) но положа честную руку на горячее сердце - боюсь соврать. С Дазами Банных я обычно работал только средствами Qt. Предлагаю тебе воспользоваться &quot;антисанкциями&quot;, выкачать и установить себе SQL-клиент <a class='tag-url' href='https://rutracker.org/forum/viewtopic.php?t=6598936' target='_blank'>Navicat</a>. А вот уже в нём настрой нужный коннект, &quot;увидь&quot; таблицы, и только потом тестируй свою прогу. А то может случиться ситуация что просто проблемсы с БД. Не ленись - проверь&#33;</div></div><br>
Качнул и установил Navicat, и вот что он говорит при попытки подключиться к БД: &quot;1130 - Host &#39;169...&#39; is not allowed to connect to this MySQL server&quot;. То есть, получатся, что, сам сервер не разрешает подключиться?]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929133</guid>
        <pubDate>Fri, 26 Sep 2025 08:06:47 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929133</link>
        <description><![CDATA[sharky72: :popcorn:]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929119</guid>
        <pubDate>Fri, 26 Sep 2025 04:01:01 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929119</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929118'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-09-26T02:35:58+00:00">26.09.25, 02:35</time></span><div class='quote '> Тебе что, назвать количество разных процессоров, с которыми работал и работаю? Из них только около половины используют GNU той или иной разновидности. И ОСей в них нет, там сплошной freestanding<br>
</div></div><br>
Ага, вот ты и попался&#33; :lol: Варишься в твоих в своих мелкософтах и <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">эмбедах всяких</span></strong>, и свету белого не видишь&#33; :lol:]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929118</guid>
        <pubDate>Fri, 26 Sep 2025 02:35:58 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929118</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929117'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T22:09:55+00:00">25.09.25, 22:09</time></span><div class='quote '>Варишься в твоих в своих мелкософтах и свету белого не видишь.</div></div> :D Тебе что, назвать количество разных процессоров, с которыми работал и работаю? Из них только около половины используют GNU той или иной разновидности. И ОСей в них нет, там сплошной freestanding]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929117</guid>
        <pubDate>Thu, 25 Sep 2025 22:09:55 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929117</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929113'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T18:48:03+00:00">25.09.25, 18:48</time></span><div class='quote '>Почему пробел. Я в курсе. Просто почему-то до этого не задумывался, что версии RTL можно так называть.</div></div><br>
Ну как почему. Потому :lol: потому что до этого не задумывался. Варишься в твоих в своих мелкософтах и свету белого не видишь. А люди уже давно научились компилячить, более того - кросскомпилячть с использованием тулчейнов.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929113'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T18:48:03+00:00">25.09.25, 18:48</time></span><div class='quote '>что версии RTL можно так называть</div></div><br>
Вот тут ты не прав - тулчейны, это не просто разные RTL, это полные разные инфраструктуры сопутствующих инструментариев.<br>
<br>
И более того&#33; Вспомни многообразие <a class='tag-url' href='https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%BE%D0%B2_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%B5%D0%BC%D1%8B%D1%85_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2' target='_blank'>форматов исполняемых файлов</a> - это связка &quot;операционная система +архитектура&quot;. И не известно кто тут главный, а кто ведомый. Хотя &quot;архитектура&quot; конечно главнее по факту, т.к. она определяет его бинарный код, его внутренности. Но не факт. Тут сложно сказать, сложно что определить, что более первично - &quot;сосуд&quot; или его &quot;содержимое&quot; :-?]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929114</guid>
        <pubDate>Thu, 25 Sep 2025 19:44:14 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929114</link>
        <description><![CDATA[sharky72: Не буду спорить. В любом случае решение есть. На сайте есть дебажная версия dll и lib. Правильней будет использовать их в отладочном билде. Решается так же прописыванием путей к нужной либе.<br>
По крайней мере я проверил на своем mysql. Код работает. Единственное пришлось еще доложить папку plugins <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-09-25T19:56:00+00:00">25.09.25, 19:56</time></span></span><br>
Ну и чтобы не тащить все это в проект, и облегчить настройку подключения mysqlconnector автору рекомендую посмотреть в сторону vcpkg.]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929113</guid>
        <pubDate>Thu, 25 Sep 2025 18:48:03 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929113</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929102'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T15:27:25+00:00">25.09.25, 15:27</time></span><div class='quote '>Это пробел в знаниях. Несущественный, но всё же. В embedded это принято ровно на столько, на сколько принято в не embedded.</div></div>Почему пробел. Я в курсе. Просто почему-то до этого не задумывался, что версии RTL можно так называть.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929108'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T16:13:39+00:00">25.09.25, 16:13</time></span><div class='quote '>Нет. Проект отлично собирается в DEBUG c релизной dll (pdb есть, функции в стеке посмотреть можно). И работает. </div></div>Не нет, а да. В проекте используются подставляемые функции (inline которые) с внешним связыванием (external linkage), и по Стандарту они обязаны (не ограничиваясь):<ul class="tag-list"><li>иметь определение в каждой единице трансляции, в которых используются;</li><li>в каждой единице трансляции, в которых используются, объявляться как подставляемые с внешним связыванием (с точностью до разрешения перегрузки);</li><li>все такие определения должны быть выполнены одинаковой последовательностью токенов.</li></ul>и неважно, как именно единицы трансляции линкуются в результирующее приложение, посредством статической линковки или динамической. Если конкретно у тебя смешение inline с внешним связыванием — обсуждаемый operator+() является non-static function template, что ставит его в один ряд с inline — работает, то лишь потому, что ожидаемое поведение является частным случаем неопределённого. Вот у нас с ТС, к примеру, не работает. И в отладчике легко видно, почему: в итоге где-то изнутри mysqlcppconn-10-vs14.dll управление попадает в sqlstring.h, конкретно в конструктор SQLString, и контент его параметра const std::string &amp; other не совпадает с определением std::string в приложении, т.б. разные последовательности токенов на лицо. Почему так? Та потому, что линкеру приспичило обработать внешние имена в объектных файлах и библиотеках вот в каком-то таком порядке. И pdb тут совершенно ни причём, на линковку он никак не влияет. Как раз наоборот, создаётся в процессе линковки. Так-то он лишь предоставляет информацию для отладчика, и при нарушении ODR способен даже запутать, т.к. отладчик может в сырцах показывать совсем не то, что в исполняемом коде.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929112</guid>
        <pubDate>Thu, 25 Sep 2025 18:31:43 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929112</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T17:57:33+00:00">25.09.25, 17:57</time></span><div class='quote '>У меня возник вопрос: может я вообще делаю ни так? В общем, у меня есть задача: нужно подключиться к базе данных котора находиться на веб-хостинге. Дак, у меня правильная логика программы, или нет?</div></div><br>
В смысле работы с Mysql? Ну да. Создали коннектор. Задали строку соединения и логин/пароль. Вызвали метод соединения, обработали исключение в случае ошибки.<br>
Только я бы все таки не стал вызывать соединение из конструктора. Можно, но некрасиво из за того что там бросаются исключения в случае ошибок и isConnected() в данном случае не нужен ;) <br>
<br>
P.S. Я до сих пор использую dbForge Studio for MySql 9 (2020) пока она была бесплатной для некоммерческого использования]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929110</guid>
        <pubDate>Thu, 25 Sep 2025 18:10:08 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929110</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>DDim1000 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T17:57:33+00:00">25.09.25, 17:57</time></span><div class='quote '>Дак, у меня правильная логика программы, или нет?</div></div><br>
Вроде бы и правильная ;) но положа честную руку на горячее сердце - боюсь соврать. С Дазами Банных я обычно работал только средствами Qt. Предлагаю тебе воспользоваться &quot;антисанкциями&quot;, выкачать и установить себе SQL-клиент <a class='tag-url' href='https://rutracker.org/forum/viewtopic.php?t=6598936' target='_blank'>Navicat</a>. А вот уже в нём настрой нужный коннект, &quot;увидь&quot; таблицы, и только потом тестируй свою прогу. А то может случиться ситуация что просто проблемсы с БД. Не ленись - проверь&#33;]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929109</guid>
        <pubDate>Thu, 25 Sep 2025 17:57:33 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929109</link>
        <description><![CDATA[DDim1000: У меня возник вопрос: может я вообще делаю ни так? В общем, у меня есть задача: нужно подключиться к базе данных котора находиться на веб-хостинге. Дак, у меня правильная логика программы, или нет?]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929108</guid>
        <pubDate>Thu, 25 Sep 2025 16:13:39 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929108</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929008'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-09-24T14:26:37+00:00">24.09.25, 14:26</time></span><div class='quote '></div></div><br>
<br>
Нет. Проект отлично собирается в DEBUG c релизной dll (pdb есть, функции в стеке посмотреть можно). И работает. В исходном vcxproj для debug конфигурации указана статическая конфигурация в переменных препроцессора для подключения mysqlconnector. Плюс указана неправильная либа для статической линковки, хотя сам проект собирается как /MDd (Multithreaded debug DLL). Короче там в конфигурации каша. Если все указать правильно то ошибок и эксепшнов не возникает. На 2022 студии.<br>
Ну и настройки релизной конфигурации вобще отсутствует.<br>
<br>
В любом случае можно скачать и отладочную версию.  на dev.mysql.com/downloads/connector/cpp]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929103</guid>
        <pubDate>Thu, 25 Sep 2025 16:07:09 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929103</link>
        <description><![CDATA[Majestio: Кстати. С понятием &#39;toolchain&#39; я столкнулся уже достаточно давно, в районе 2011 года, когда познакомился с проектом <a class='tag-url' href='https://mxe.cc' target='_blank'>MXE</a>. Но именно &quot;кристальное&quot; его воплощение я заметил в языке программирования Rust. Увы и ах, этот язык мне не зашел ввиду слишком узкого диапазона применений. К примеру, лепить GUI-морды сегодня на базе GTK2, когда уже есть GTK4 - считаю просто кощунственным. И тем не менее, заглянул в структуру каталогов когда-то установленного Раста, я наблюдаю:<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">X:\Tools\Rust\rust\toolchains</div><div class="code_line">&nbsp;├─ stable-i686-pc-windows-gnu</div><div class="code_line">&nbsp;├─ stable-i686-pc-windows-msvc</div><div class="code_line">&nbsp;├─ stable-x86_64-pc-windows-gnu</div><div class="code_line">&nbsp;└─ stable-x86_64-pc-windows-msvc</div></ol></div></div></div></div><br>
Правда прекрасно?  :lol:]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929102</guid>
        <pubDate>Thu, 25 Sep 2025 15:27:25 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929102</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3928803'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-09-21T22:34:27+00:00">21.09.25, 22:34</time></span><div class='quote '>У меня получилось прописать дополнительно:<br>
E:&#092;Documents&#092;3.Projects&#092;C++&#092;TestMySQL&#092;mysql&#092;lib64&#092;vs14&#092;libcrypto.lib<br>
E:&#092;Documents&#092;3.Projects&#092;C++&#092;TestMySQL&#092;mysql&#092;lib64&#092;vs14&#092;libssl.lib<br>
E:&#092;Documents&#092;3.Projects&#092;C++&#092;TestMySQL&#092;mysql&#092;lib64&#092;vs14&#092;mysqlcppconn.lib<br>
E:&#092;Documents&#092;3.Projects&#092;C++&#092;TestMySQL&#092;mysql&#092;lib64&#092;vs14&#092;mysqlcppconn-static.lib<br>
E:&#092;Documents&#092;3.Projects&#092;C++&#092;TestMySQL&#092;mysql&#092;lib64&#092;vs14&#092;mysqlcppconnx.lib<br>
E:&#092;Documents&#092;3.Projects&#092;C++&#092;TestMySQL&#092;mysql&#092;lib64&#092;vs14&#092;mysqlcppconnx-static.lib</div></div><br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">Вот тут я написал неправильно&#33;</span></strong>  :wall: Т.к. линкеру нужно под каждую конфигурацию указывать нужные либы по строгим правилам. Для статических - статические, для динамических - динамические. В дополнение - для релизных - релизные, для отладочных - отладочные. Все скопоп прописывать низя, скорее всего будут конфликты символов. Сорян&#33; :whistle:<br>
<br>
Ах, да, еще ... где-то в &quot;глубоких водах&quot; GNU я вроде встречал такой термин как &quot;гибридная&quot; или &quot;смешанная&quot; линковка. Это когда часть либ линкуется статически, а часть динамически. ChatGPT утверждает, что и Мелкософтовские линкеры тоже владеют таким кунг-фу. Думаю, тоже стоит внимание обратить на эту шляпу. А то мало ли ... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-09-25T15:52:44+00:00">25.09.25, 15:52</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3929008'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-09-24T14:26:37+00:00">24.09.25, 14:26</time></span><div class='quote '>Никогда не задумывался, что это действительно можно тоже назвать тулчейном, как принято в embedded.</div></div><br>
Это пробел в знаниях. Несущественный, но всё же. В embedded это принято ровно на столько, на сколько принято в не embedded. Ибо термин toolchain (инструментальная цепочка) не привязан исключительно к embedded-системам, а имеет более общий смысл в разработке программного обеспечения. Тулчейн - это набор инструментов, используемых для создания исполняемых файлов, библиотек или других артефактов для определённой целевой платформы (таргета). Он включает в себя компиляторы, ассемблеры, компоновщики (линкеры), отладчики и другие утилиты, необходимые для сборки и, возможно, отладки кода.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929008</guid>
        <pubDate>Wed, 24 Sep 2025 14:26:37 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3929008</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466801&view=findpost&p=3928948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-23T21:46:39+00:00">23.09.25, 21:46</time></span><div class='quote '>P.S. 14 это не версия студии, а версия toolchain (так написано в доке с MySQL connector). так что нарушений ODR быть не должно. 22 студия так же использует 14 тулчейн (v14.3), так что все работает и на новых студиях</div></div>Никогда не задумывался, что это действительно можно тоже назвать тулчейном, как принято в embedded. Но отсутствие нарушений ODR всё ж не факт. Счас вот глянул, у меня их две версии, 14.16.27023 и 14.44.35207, отличаются минорами, ибо апдейты Студии они такие. Понятно, что первая уже неактуальна и не используется, но минор версии, на которой был собран SQL, неизвестно какой, и даже если в пределах мажора 14 ничего не должно поменяться, поменяться-таки могло, т.к. баги совместимости никто не отменял. Поэтому я всегда после наката нового апдейта рабочие проекты собираю rebuild all. Так, на всякий случай. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-09-24T14:30:07+00:00">24.09.25, 14:30</time></span></span><br>
Но тут всё проще: приложение собирается DEBUG, т.е. с отладочной версией RTL, а SQL был собран с релизной версией. По-хорошему надо где-то там взять отладочную SQL и в дебажные конфигурации своих проектов втыкать их.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3928949</guid>
        <pubDate>Tue, 23 Sep 2025 22:51:24 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3928949</link>
        <description><![CDATA[sharky72: И в Debug билде надо убрать STATIC_CONCPP в настройках препроцессора. Раз уж решили работать именно с dll.]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3928948</guid>
        <pubDate>Tue, 23 Sep 2025 21:46:39 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3928948</link>
        <description><![CDATA[sharky72: Кстати во избежании будущих проблем с переносом проекта на другой диск или папку рекомендую использовать не абсолютные, а относительные пути до этих библиотек и заголовочных путей в настройках проекта (раз уж они внутри проекта) и использовать макросы подстановки &#036;(SolutionDir) &#036;(ProjectDir) и т.д.<br>
&#036;(SolutionDir)MySQL&#092;lib64&#092;vs14 <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-09-23T22:30:44+00:00">23.09.25, 22:30</time></span></span><br>
Далее..<br>
Почему вы линкуете mysqlcppconnx-static.lib? У вас же динамическая линковка, а не статическая. Должно быть mysqlcppconnx.lib вернее mysqlcppconn.lib (потому что используете именно mysqlcppconn-10-vs14.dll, а не mysqlcppconnx-2-vs14.dll)<br>
<br>
Ну и после исправлений тестовый пример работает нормально.<br>
<br>
P.S. 14 это не версия студии, а версия toolchain (так написано в доке с MySQL connector). так что нарушений ODR быть не должно. 22 студия так же использует 14 тулчейн (v14.3), так что все работает и на новых студиях]]></description>
        <author>sharky72</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3928946</guid>
        <pubDate>Tue, 23 Sep 2025 18:47:31 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3928946</link>
        <description><![CDATA[Qraizer: Вероятно, когда ты правил проект по заветам <strong class='tag-b'>Majestio</strong>, ты отредактировал только одну, текущую конфигурацию. Надо было бы все, чтоб не возвращаться к этому, но ничего страшного, просто повтори ещё раз.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3928945</guid>
        <pubDate>Tue, 23 Sep 2025 18:40:42 +0000</pubDate>
        <title>Как исправить ошибку: &amp;quot;LNK2019 ссылка на неразрешенный внешний символ&amp;quot;?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466801&amp;view=findpost&amp;p=3928945</link>
        <description><![CDATA[DDim1000: Когда я переключаю на Release, то сразу вот эти строки подсвечиваются красной чертой. То есть библиотеки становятся не достуаны.<br>
<br>
<span class='tag-u'>#include</span> &lt;mysql_driver.h&gt;<br>
<span class='tag-u'>#include</span> &lt;mysql_connection.h&gt;<br>
<span class='tag-u'>#include</span> &lt;cppconn/driver.h&gt;<br>
<span class='tag-u'>#include </span>&lt;cppconn/exception.h&gt;<br>
<span class='tag-u'>#include </span>&lt;cppconn/resultset.h&gt;<br>
<span class='tag-u'>#include</span> &lt;cppconn/statement.h&gt;<br>
<span class='tag-u'>#include</span> &lt;cppconn/prepared_statement.h&gt;]]></description>
        <author>DDim1000</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	