<?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=400278&amp;view=findpost&amp;p=3582512</guid>
        <pubDate>Sun, 15 Mar 2015 08:30:38 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582512</link>
        <description><![CDATA[SectorbzC: Если это о последнем примере, то он <strong class='tag-b'>очень сырой</strong>. Цель - показать саму возможность-принцип. И лучше брать указатели не на начало массива, а то, что возвращает new. new же возвращает <strong class='tag-b'>не</strong> Undefined behavior? Даже если он &quot;размещающий&quot;. А если new взвращает Undefined behavior, то это забавно.<br>
<br>
А если в 1, то где именно?<br>
Ну и пометил там, что всё то же самое можно реализовать с помощью С++ контейнеров-массивов std типа того же vector, map.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582484</guid>
        <pubDate>Sun, 15 Mar 2015 00:01:50 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582484</link>
        <description><![CDATA[Qraizer: Undefined behavior как с куста.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582483</guid>
        <pubDate>Sat, 14 Mar 2015 23:53:12 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582483</link>
        <description><![CDATA[SectorbzC: В сетевом программировании к сожалению не компетентен (не пришлось как-то). CGI на Си/С++ могу писать, а вот с сокетами-портами почти не знаком. И многопоточностью.<br>
<br>
Но вот тут есть какие-то, возможно полезные наработки другого направления. Кому были нужны добавления переменных экземпляру &quot;на лету&quot; - держите. <a class='tag-url' href='http://irrlicht.ru/forum/viewtopic.php?f=23&t=941&p=18746#p18746' target='_blank'>С проверкой по ID типа</a>.<br>
<br>
А вот ещё интересное. Что-то вроде заготовки байтного потока. Можно организовать что-то вроде базы данных с доступом по ID.<br>
Может быть пригодится кому-нибудь. (компилировалось-проверялось под minGW 441 code::blocks)<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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.h&#62; &nbsp; &nbsp; /* memset, memcpy */</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">/// тестовый</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct T0</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;T0() { cout &#60;&#60; &quot;T0 Cstor!&quot; &#60;&#60; &quot;\n&quot;; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;~T0 () { cout &#60;&#60; &quot;T0 Dstor!&quot; &#60;&#60; &quot;\n&quot;; }</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">///</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct T2</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;struct SByteStream</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;char ps [ sizeof(unsigned short) ];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;char pf [ sizeof(float) ];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;char pd [ sizeof(double) ];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//char pst [ sizeof(std::string) ];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;char pst [ sizeof(T0) ]; /// а ведь их можно объединить в 1 массив... с &quot;отдачей&quot; intptr_t по ID типа, серийнику экземпляра, порядковому номеру в потоке...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} d_;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;T2()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new (d_.ps) unsigned short ( 105 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new (d_.pf) float ( 205.502f );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new (d_.pd) double ( 1505.5051f );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//new (d_.pst) std::string( &quot;String string&quot; );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new (d_.pst) T0();</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;~T2()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//((std::string*)d_.pst[0])-&#62;~string(); // вышибает зараза, но для своих типов нужно вызывать...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((T0*)d_.pst[0])-&#62;~T0();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memset ( &amp;d_,0,sizeof ( T2::SByteStream ) );</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 ()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cout &#60;&#60; *(unsigned short*) &amp;d_.ps[0] &#60;&#60; &quot;\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#60;&#60; *(float*) &amp;d_.pf[0] &#60;&#60; &quot;\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#60;&#60; *(double*) &amp;d_.pd[0] &#60;&#60; &quot;\n&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&#60;&#60; *(std::string*) &amp;d_.pst[0] &#60;&#60; &quot;\n&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">///</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;T2 t2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;t2.print ();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;Press ENTER to EXIT!&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cin.get();</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
</div></div>]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582449</guid>
        <pubDate>Sat, 14 Mar 2015 18:11:49 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582449</link>
        <description><![CDATA[JoeUser: Если честно, читал-читал ТС, но так и не понял Цели ТС. В чем проблема, в чем вопрос?<br>
<br>
Понимаю, вернее полагаю (ввиду свеого недостаточного знания плюсоф), что в нынешней реализации явно не хватает поддержки параллелизма &quot;искаропки&quot;, если точнее - способов взаимодействия. Это единственный существенный минус. ИМХО. Да, есть функции поддержки многопоточности, но этого мало, ИМХО&#33; Хотелось бы большего, а-ля, &quot;рандеву&quot; языка АДА в синтаксисе языка (Цэ++).  ИМХО - весьма симпатичная концепция&#33; И самое интересное - весьма древняя, но актуальная по сей день&#33;<br>
См, описалово (язык Ада, о рандеву):<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">Чтобы некоторая задача-клиент могла инициировать рандеву с задачей-сервером, описание спецификации задачи-сервера должно содержать описание соответствующего входа. Следует заметить, что описания входов могут быть помещены только в описание спецификации задачи, кроме того, задача может иметь приватные входы. Таким образом, описание входа в спецификации задачи-сервера может рассматриваться как декларация сервиса, предоставляемого задачей-сервером для задач-клиентов. </div></div><br>
Читая доки по Qt, до сих пор не понимаю реальную реализацию &quot;сигналов-слотов&quot;. Потоко-безопасно ли это ... Практический вопрос не вставал, но в области интересов это висит по сей день.<br>
<br>
ЗЫ: Поправьте меня в моих заблуждениях, буду благодарен.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582035</guid>
        <pubDate>Fri, 13 Mar 2015 08:11:42 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582035</link>
        <description><![CDATA[D_KEY: С последним точно в холивары нужно.]]></description>
        <author>D_KEY</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582030</guid>
        <pubDate>Fri, 13 Mar 2015 08:11:08 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582030</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3582010'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2015-03-13T07:09:58+00:00">13.03.15, 07:09</time></span><div class='quote '>Прям таки выкидывает?</div></div><br>
Ну... Я думаю да. Не резко, конечно.]]></description>
        <author>korvin</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582028</guid>
        <pubDate>Fri, 13 Mar 2015 08:08:46 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582028</link>
        <description><![CDATA[SectorbzC: И несколько простых вопросов:<br>
Зачем был нужен этот <strong class='tag-b'>auto</strong>? (в C++911 и выше) Что он даёт? Принципиально?<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[2] = 15, // int, 4 long // любая переменная это массив байт...</div><div class="code_line">y[4] = 87.f, // float</div><div class="code_line">z[8] = 150.f, // double</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">x&#60;2&#60;15, // int</div><div class="code_line">y&#60;4&#60;87.f, // float</div><div class="code_line">z&#60;8&#60;150.f; // double</div><div class="code_line">str &#60; std::string &#60; &quot;string&quot;;</div></ol></div></div></div></div><br>
(т.е. всё свести к кратким потокам)<br>
<br>
Тип C++ необходимо указывать явно.<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">char str [] = &quot;Str&quot;;</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">std::string str = &quot;Str&quot;;</div></ol></div></div></div></div><br>
И определить &quot;что именно&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">str = &quot;Str&quot;;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>Но.</strong><br>
Если тип указан справа от выражения, то на кой чёрт он слева от него?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">str = std::string (&quot;Str&quot;); /// предположим это функция-конструктор</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">myObj * obj = : ptr; /// чтобы уйти от постоянного копипаста</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">myObj * obj &#60; ptr; /// чтобы уйти от постоянного копипаста</div></ol></div></div></div></div><br>
<br>
Зачем писать эти повторяющиеся auto <strong class='tag-b'>постоянно</strong>? Как public/private в java/C#? И т.д. <br>
<br>
Шаблонное же программирование (которое и даёт основной прирост производительности) оно вообще к кастам не расположено (это своеобразный стиль на 90% исключающий любые касты, предполагающий работу со статикой). Это как <strong class='tag-b'>&quot;несколько языков в 1&quot;. Причём даже без синтеза, на уровне перемешивания, <span class='tag-u'>причём временами хаотического</span>.</strong> (что и влечёт переусложнение кода от &quot;переусложения парадигм&quot; особенно заметное в последних версиях языка)<br>
<br>
<strong class='tag-b'>Резюмирую:</strong><br>
C++ - это язык &quot;много в 1 флаконе&quot;, причём не синтез, а временами хаотическое перемешивание. Язык для исследований. С, я бы сказал, нарочито громоздким синтаксисом. Но очень широкими возможностями (возможно максимально широкими). Воспользоваться которыми может позволить понимание верных подходов/приципов/парадигм.<br>
Решения найденные в С++ используются для последующего внедрения успешных решений в такие языки, которые преспособлены для работы.<br>
<strong class='tag-b'>Задача - приспособить C++ и для дела тоже.</strong> Это можно сделать упорядочив хаос по принципам/парадигмам/подходам, один из которых:<br>
<strong class='tag-b'>Сигнал-&gt;слот-&gt;отражающая матрица</strong>. И фреймворки сверху Obj C из Mac OS. Применяемый в winAPI, Qt и многих других местах, о чём в топе.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582010</guid>
        <pubDate>Fri, 13 Mar 2015 07:09:58 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582010</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3582000'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2015-03-13T06:41:54+00:00">13.03.15, 06:41</time></span><div class='quote '>ТС не в курсе, что Apple уже выкидывает Objective C в пользу своего Swift?</div></div><br>
Прям таки выкидывает?]]></description>
        <author>D_KEY</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582000</guid>
        <pubDate>Fri, 13 Mar 2015 06:41:54 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3582000</link>
        <description><![CDATA[korvin: ТС не в курсе, что Apple уже выкидывает Objective C в пользу своего Swift?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581970'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T21:49:16+00:00">12.03.15, 21:49</time></span><div class='quote '>И понятно откуда идея (Mac OS, Obj C опять). Но громоздкий синтаксис никуда не делся ни в jave-е, ни в C# ...</div></div><br>
... ни в ObjC. Хочешь негромоздкий синтаксис — бери SmallTalk или Io, например, раз так прёт «ТруЪ-ООП». Ruby в крайнем случае.]]></description>
        <author>korvin</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581976</guid>
        <pubDate>Thu, 12 Mar 2015 22:49:02 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581976</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581974'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T22:34:19+00:00">12.03.15, 22:34</time></span><div class='quote '>Что здесь вообще происходит? Есть какой-то смысл в предложении ТС? Есть ли какой-то конструктив в теме? Стоит ли вчитываться? </div></div><br>
Нет, можешь не терять время зря. <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="2015-03-12T22:50:25+00:00">12.03.15, 22:50</time></span></span><br>
Ну хотя можешь первый пост прочитать, но я его не осилил - честно. <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="2015-03-12T22:52:39+00:00">12.03.15, 22:52</time></span></span><br>
Просто как то идет - разговор ниочем. :-?]]></description>
        <author>KILLER</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581974</guid>
        <pubDate>Thu, 12 Mar 2015 22:34:19 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581974</link>
        <description><![CDATA[D_KEY: Что здесь вообще происходит? Есть какой-то смысл в предложении ТС? Есть ли какой-то конструктив в теме? Стоит ли вчитываться?]]></description>
        <author>D_KEY</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581970</guid>
        <pubDate>Thu, 12 Mar 2015 21:49:16 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581970</link>
        <description><![CDATA[SectorbzC: В обучающих целях. Как минимум.<br>
К тому же причём тут многопотоковость? Obj C это отнюдь не только многопотоковость. Это стиль программирования, подход, парадигма.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>А C# программа без .NET Framework.</div></div><br>
И понятно откуда идея (Mac OS, Obj C опять). Но громоздкий синтаксис никуда не делся ни в jave-е ни в C# + резко сузились возможности.<br>
Посмотрел код SObjectizer... нет уж, я лучше по старинке. Как-то оно &quot;на устаревшем С++ + Си&quot; попонятнее получается, при почти тех же возможностях.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581963</guid>
        <pubDate>Thu, 12 Mar 2015 20:04:34 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581963</link>
        <description><![CDATA[Flex Ferrum: Я всё-таки не могу понять, зачем это нужно... Именно в таком виде. Зачем? Если нужен обмен произвольными сообщениями между объектами чёрными-ящиками и прочее - так вон, в соседнем разделе регулярно апдейтится библиотека SObjectizer. Аккурат для этих целей. То есть если уж писать свой велосипед, то по-взрослому, про акторов и прочее. Это по крайней мере вписывается в современные парадигмы разработки ПО. А в таком виде - нет, не пойму.]]></description>
        <author>Flex Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581959</guid>
        <pubDate>Thu, 12 Mar 2015 19:50:07 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581959</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581958'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:44:28+00:00">12.03.15, 19:44</time></span><div class='quote '>На счёт этого точно не знаю (сколько заплатить по объёму). Но. Когда компилировал библиотеки под wxWidgets (кроссплатформенные), они все dll, которые лежат в папке win (условно говоря, у неё вроде как свои) линковали к *.exe (т.к. запускаться должно было на любой системе). И получалось окно с *.exe 50-100 мб... или таскать окло 10 dll в папке со всеми ексешниками.<br>
Вот я смеялся...</div></div><br>
А что тут смешного? Есть статическая линковка, есть динамическая. Java программа тоже не будет работать без JVM, А C# программа без .NET Framework. И если первая весит в районе сотни метров, то последней нет предела, можешь тоже посмеятся ;) <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581958'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:44:28+00:00">12.03.15, 19:44</time></span><div class='quote '>А в Mac OS вроде как некий фреймворк. По аналогии с win. Откуда всё берётся готовое.</div></div><br>
Ключевое слово тут: <strong class='tag-b'>вроде как некий фреймворк</strong> <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="2015-03-12T20:04:33+00:00">12.03.15, 20:04</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T16:42:59+00:00">12.03.15, 16:42</time></span><div class='quote '>А вот то, что знаю точно (кстати, у автора данной статьи тоже графомания или кто-то о себе пишет?)</div></div><br>
Шырокие у вас познания проблем STL :good: Имеем 2 проблемы - одна высосанная из пальца, вторая устарела морально.]]></description>
        <author>KILLER</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581958</guid>
        <pubDate>Thu, 12 Mar 2015 19:44:28 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581958</link>
        <description><![CDATA[SectorbzC: to <strong class='tag-b'>Qraizer</strong><br>
<br>
На счёт этого точно не знаю (сколько заплатить по объёму). Но. Когда компилировал библиотеки под wxWidgets (кроссплатформенные), они все dll, которые лежат в папке win (условно говоря, у неё вроде как свои) линковали к *.exe (т.к. запускаться должно было на любой системе). И получалось окно с *.exe 50-100 мб... или таскать окло 10 dll в папке со всеми ексешниками. А дело было на win XP SP 1, где никаких фреймворков тогда не было (они откуда-то взялись в более поздних версиях win).<br>
Вот я смеялся...<br>
<br>
А в Mac OS вроде как некий фреймворк. По аналогии с win. Откуда всё берётся готовое.<br>
Как-то так. Но тут специалист не большой.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581954</guid>
        <pubDate>Thu, 12 Mar 2015 19:34:16 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581954</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:16:57+00:00">12.03.15, 19:16</time></span><div class='quote '>1. По ссылке-то? А он там и пишет в каких случаях перименяются шаблоны (применительно к системам частиц).</div></div><br>
Применительно к ссылке-то&#33; Он там пишет вообще, а не применительно к системам частиц.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:16:57+00:00">12.03.15, 19:16</time></span><div class='quote '>2. Это повлияет на время отладки в случае поиска ошибки, например.</div></div><br>
Как?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:16:57+00:00">12.03.15, 19:16</time></span><div class='quote '>Или знание машинного кода программисту C++ - прилагается по умолчанию?<br>
Но тогда с машинного кода и нужно начинать обучение С++.</div></div><br>
Не совсем понял о чем ты.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:16:57+00:00">12.03.15, 19:16</time></span><div class='quote '>3. На время разработки если для записи в файл/чтения из файла или в GUI каждый раз потребуется программист.<br>
</div></div><br>
Для чего? Я не въезжаю о чем ты. Причем тут шаблоны и статический/динамический полиморфизм?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:16:57+00:00">12.03.15, 19:16</time></span><div class='quote '>4. А почему столько негатива?</div></div><br>
Я прокомментировал то что вы привели в качестве некоего аргумента, как мне показалось, коим это не является.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:16:57+00:00">12.03.15, 19:16</time></span><div class='quote '>Это факт. Меня например слегка удививший. WinAPI вот.</div></div><br>
И чем он тебя удивил?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:16:57+00:00">12.03.15, 19:16</time></span><div class='quote '><br>
5. Новый интересный подход-инструмент, вполне реализуемый средствами языка это же не причина для негативных эмоций?<br>
Побольше бы таких подходов - разработка стала бы более интересным занятием. Новая переменная классу - пожалуйста. Функция - пожалуйста. Идентификация по ID - пожалуйста. Хоть пер. комп., хоть пер. исп. Хочешь - делай быстрым, но статичным на шаблонах. Хочешь не заморачивайся. Нужны ID + void* - intptr_t - вперёд. Ничто не &quot;застатичивает&quot; возможности. Максимальный набор инструментов и возможностей. Обучить новичков простой отладке на исключениях/2-3 макросах препроцессора и их обучение резко ускорится. Без заний машинного кода. </div></div><br>
Каких негативных эмоций? Где вы их увидели?<br>
Я писал исключительно в контексте того - что процитировал. <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="2015-03-12T19:38:01+00:00">12.03.15, 19:38</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T19:16:57+00:00">12.03.15, 19:16</time></span><div class='quote '>Нужны ID + void* - intptr_t - вперёд.</div></div><br>
Зачем они нужны? Да проще с шаблонами чем с этими ID+void* - intptr_t.]]></description>
        <author>KILLER</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581949</guid>
        <pubDate>Thu, 12 Mar 2015 19:17:53 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581949</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T16:42:59+00:00">12.03.15, 16:42</time></span><div class='quote '>А вот то, что <a class='tag-url' href='http://rsdn.ru/article/cpp/stlproblem.xml' target='_blank'>знаю точно</a> (кстати, у автора данной статьи тоже графомания или кто-то о себе пишет?)</div></div>Первый пример ровно про ODR, второй... не знаю, насколько он сейчас актуален, статья очень старая про настолько древние компиляторы, что они ни одному Стандарту языка не удовлетворяют. <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="2015-03-12T19:19:30+00:00">12.03.15, 19:19</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581932'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T18:09:08+00:00">12.03.15, 18:09</time></span><div class='quote '>Коротко: трудозатраты должны соответствовать приросту производительности</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="2015-03-12T19:26:37+00:00">12.03.15, 19:26</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581936'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T18:20:23+00:00">12.03.15, 18:20</time></span><div class='quote '>Так в C++ если ты не пользуешься к примеру виртуальными функциями, то анализируя откомпилированный код программы ты даже не узнаешь, что такая возможность в языке присутствует.</div></div>Вот, точно. Неиспользуемые в программе возможности языка не стоят для неё ничего. Если я захочу динамический полиморфизм, код потеряет чуть в производительности и разрастётся в размере, но я сознательно на это иду, ибо получаю с этого адекватную, как я оценил, отдачу. Если бы я платил за динамический полиморфизм в программах, его не использующих, то я бы скорее предпочёл Дельфи, там платить за всё сразу и авансом за пять проектов вперёд суть нормальная практика.<br>
Я задавал вопрос касательно принципа стоимости в Objective C. Если я возьму C-программу и откомпилю в Obj-C, сколько придётся заплатить лишнего? А если я не буду расширять интерфейс класса в ран-тайм, насколько более эффективным получится объектный код, если маршалинг сообщений заменить на простые статичные вызовы методов?]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581948</guid>
        <pubDate>Thu, 12 Mar 2015 19:16:57 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581948</link>
        <description><![CDATA[SectorbzC: to <strong class='tag-b'>KILLER</strong><br>
<br>
1. По ссылке-то? А он там и пишет в каких случаях перименяются шаблоны (применительно к системам частиц).<br>
2. Это повлияет на время отладки в случае поиска ошибки, например.<br>
Или знание машинного кода программисту C++ - прилагается по умолчанию?<br>
Но тогда с машинного кода и нужно начинать обучение С++.<br>
3. На время разработки если для записи в файл/чтения из файла или в GUI каждый раз потребуется программист.<br>
<br>
4. А почему столько негатива? У вас ваш случай, у него свой. На Obj C с 1983 уже больше 30 лет пишут коммерческие продукты.<br>
<strong class='tag-b'>Это факт.</strong> Меня например слегка удививший. WinAPI вот. Qt (не последнее GUI?) Тоже применяется. Везде применяется и так мало известно что это-откуда это.<br>
<br>
5. Новый интересный подход-инструмент, вполне реализуемый средствами языка это же не причина для негативных эмоций?<br>
Побольше бы таких подходов - разработка стала бы более интересным занятием. Новая переменная классу - пожалуйста. Функция - пожалуйста. Идентификация по ID - пожалуйста. Хоть пер. комп., хоть пер. исп. Хочешь - делай быстрым, но статичным на шаблонах. Хочешь не заморачивайся. Нужны ID + void* - intptr_t - вперёд. Ничто не &quot;застатичивает&quot; возможности. Максимальный набор инструментов и возможностей. Обучить новичков простой отладке на исключениях/2-3 макросах препроцессора и их обучение резко ускорится. Без заний машинного кода. А они придут по мере накопления опыта.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581938</guid>
        <pubDate>Thu, 12 Mar 2015 18:24:55 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581938</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581932'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T18:09:08+00:00">12.03.15, 18:09</time></span><div class='quote '>Говоря просто - да, я предпочитаю динамический полиморфизм статическому. Какие бы крышерсывающие возможности не давали бы шаблоны, плата за них всегда очень велика</div></div><br>
У динамического полиморфизма плата не менее велика. И как ты выразился:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581932'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T18:09:08+00:00">12.03.15, 18:09</time></span><div class='quote '>Ложка хороша к обеду, т.е. каждый инструмент к своему случаю.</div></div><br>
Поэтому использовать везде динамический полиморфизм - глупости и непрофессионализм, тогда проще взять Java и не <span class="tag-color tag-color-named" data-value="red" style="color: red">пурдить</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="2015-03-12T18:27:43+00:00">12.03.15, 18:27</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581932'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T18:09:08+00:00">12.03.15, 18:09</time></span><div class='quote '>плата за них всегда очень велика (время компиляции</div></div><br>
Никогда не понимал этого аргумента. Да хоть ночь оно будет компилиться - и что ? Это как то повлияет на конечный продукт? Ах да, извините, придется вместо 5 секунд, ждать 20 секунд, это же не приемлимо для &quot;кул-спецов&quot;. <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="2015-03-12T18:30:33+00:00">12.03.15, 18:30</time></span></span><br>
Вот у меня был продукт, с частью которого я работал - время его компиляции, только клиента занимала около 2-х часов. Шаблонов там не то что бы было много, там их было столько сколько нужно - даже в разы меньше, чем нужно было. И компилилось все это долго не потому что там в каком то файле затесался шаблон, а потому что продукт был большой. Ну было бы там много шаблонов, и че? Пусть будет компилится оно вместо 2-х часов - 3 часа, да я на ночь как ставил компиляцию свежей версии, так и ставил бы, и ничего это не изменило бы. Но всегда найдется профи с геймдева который обязательно укажет на эту ну просто мега великую плату зп шпблоны&#33;&#33;&#33;&#33;111один]]></description>
        <author>KILLER</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581936</guid>
        <pubDate>Thu, 12 Mar 2015 18:20:23 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581936</link>
        <description><![CDATA[amk: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581921'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T17:27:54+00:00">12.03.15, 17:27</time></span><div class='quote '>Дело не в стоимости (GNU Step вроде как бесплатен).</div></div> Имеется в виду не цена в фантиках США. А то, что неиспользованные возможности языка и библиотек не должны загружать процессор и увеличивать размер программы. По возможности. Так в C++ если ты не пользуешься к примеру виртуальными функциями, то анализируя откомпилированный код программы ты даже не узнаешь, что такая возможность в языке присутствует.<br>
<br>
Подход Александреску на самом деле спорный. Шаблоны тоже позволяют собирать сцену из кирпичиков. Причём возможности их даже больше. Да и противопоставлять статический полиморфизм динамическому неверно - они не конкурируют, а скорее дополняют друг друга.<br>
Тут скорее его личная неприязнь к шаблонам.]]></description>
        <author>amk</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581932</guid>
        <pubDate>Thu, 12 Mar 2015 18:09:08 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581932</link>
        <description><![CDATA[SectorbzC: Коротко: <strong class='tag-b'>трудозатраты должны соответствовать приросту производительности</strong><br>
Иначе получится как в этом диалоге:<br>
<a class='tag-url' href='http://www.gamedev.ru/code/forum/?id=141595' target='_blank'>http://www.gamedev.ru/code/forum/?id=141595</a><br>
<br>
Система частиц на основе стратегий Александреску.<br>
И мнение разработчика:<br>
<em class='tag-i'>Говоря просто - да, я предпочитаю динамический полиморфизм статическому. Какие бы крышерсывающие возможности не давали бы шаблоны, плата за них всегда очень велика (время компиляции, размер кода, требования к подготовке специалистов и т.п.). Но самое главное - динамический полиморфизм позволяет  <span class='tag-u'>собирать &quot;из кирпичиков&quot; сцену непосредственно художником, без привлечения программистов.</span></em><br>
<br>
Собирать сцену из кусочков...<br>
<a class='tag-url' href='https://ru.wikipedia.org/wiki/Objective-C' target='_blank'>Objective-C</a><br>
<br>
<em class='tag-i'><strong class='tag-b'>software IC</strong>. Под этой концепцией понимается возможность собирать программы из готовых компонентов (объектов), подобно тому как сложные электронные устройства могут быть легко собраны из набора готовых интегральных микросхем...</em><br>
<br>
Если компания гигантская, с гигантским накопленным опытом, то она может позволить себе частицы на шаблонах... в противном случае...<br>
Ложка хороша к обеду, т.е. каждый инструмент к своему случаю.<br>
Иначе программист оказывается перед задачей строить небоскрёб в одиночку или небольшой группой.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581921</guid>
        <pubDate>Thu, 12 Mar 2015 17:27:54 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581921</link>
        <description><![CDATA[SectorbzC: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T13:13:05+00:00">12.03.15, 13:13</time></span><div class='quote '><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="2015-03-12T13:39:50+00:00">12.03.15, 13:39</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581672'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Kray74 &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T12:09:40+00:00">12.03.15, 12:09</time></span><div class='quote '>К тому же в C++ всегда была важна производительность...</div></div>Скорее принцип нулевой стоимости. Вот кстати да, как с этом у Objective C?</div></div><br>
Дело не в стоимости (GNU Step вроде как бесплатен). И имеет и такой компилятор и сякой (платны мегафреймворки).<br>
А VC++ не сказать, чтобы совсем бесплатен...<br>
И не в производительности (потому, что если эта производительность за счёт труда программиста, то это отнюдь не всегда производительность, а скорее наоборот).<br>
<br>
А в подходах, которые позволяют что-то сделать без неприемлемых трудозатрат, потери времени, переусложнения после которого теряется способность читать код.<br>
Как уже было сказано. То есть в нахождении баланса между читаемостью-доступностью кода, трудозатратами и производительностью.<br>
В целях поиска таких подходов стоило бы изучить и Си и Obj C повнимательнее.<br>
И причём тут я вообще-то? А winAPI - что другой подход? Qt? <a class='tag-url' href='https://ru.wikipedia.org/wiki/SFML' target='_blank'>sf::Event SFML</a>? - Везде <strong class='tag-b'>сигнал-слот-&gt;рефлексия</strong> из Obj C/Smalltalk.<br>
Может не единственный подход, но хороший. И гораздо лучше чем без него.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581920</guid>
        <pubDate>Thu, 12 Mar 2015 17:27:19 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581920</link>
        <description><![CDATA[amk: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T16:42:59+00:00">12.03.15, 16:42</time></span><div class='quote '>Я не знаю, что такое ODR</div></div> One Definition Rule - правило одного определения.<br>
Чтобы все определения какой-то сущности в разных частях программы гарантированно совпадали, эти определения должны быть не просто копиями - они и реально должны быть одним единственным текстом, ссылки на который можно вставлять из разных мест программы. За идентичностью копий сложно следить.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T16:42:59+00:00">12.03.15, 16:42</time></span><div class='quote '>Если MyNameIsIgor считает мою реализацию кривой, то пусть покажет свою, прямую.<br>
А воевать с Qraizer он может сколько ему хочется и где ему хочется.</div></div> <strong class='tag-b'>MyNameIsIgor</strong> считает кривой саму идею пытаться в C++ применять неприспособленные для C++ методологии Objective-C. А воевать с <strong class='tag-b'>Qraizer</strong>ом он вряд ли будет. В этих вопросах они в основном сходятся. <strong class='tag-b'>MyNameIsIgor</strong> скорее будет воевать с тобой.]]></description>
        <author>amk</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581906</guid>
        <pubDate>Thu, 12 Mar 2015 16:42:59 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581906</link>
        <description><![CDATA[SectorbzC: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581672'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Kray74 &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T12:09:40+00:00">12.03.15, 12:09</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581609'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T10:27:43+00:00">12.03.15, 10:27</time></span><div class='quote '>Новую переменную? <br>
Тогда добавить в структуру такой конструкт: (не проверял, но работать должно, т.е. технически это легко решаемо)</div></div><br>
Напоминаю, что изначально вы задумывали сделать C++ более удобным (если я правильно понял). Приведенный конструкт как-то этой цели не способствует.<br>
К тому же в C++ всегда была важна производительность, а у вас выделения динамической памяти при создании простейшего объекта.</div></div><br>
<br>
Вы считаете, что не способствует. Аргументируйте.<br>
Например, каким образом производительности будет способствовать перенос с ID + intptr_t на IRootLib (виртуалистику).<br>
Если и то и другое требует сравнения по ID и является периодом исполнения.<br>
При этом виртуальную базу без перекомпиляции библиотеки зачастю изменить невозможно...<br>
<br>
<strong class='tag-b'>P.S.</strong> Кстати. Я не знаю, что такое ODR, отвечая понадеялся на компетентность Qraizer.<br>
А вот то, что <a class='tag-url' href='http://rsdn.ru/article/cpp/stlproblem.xml' target='_blank'>знаю точно</a> (кстати, у автора данной статьи тоже графомания или кто-то о себе пишет?)<br>
И если это знать с самого начала - может сберечь уйму времени и нервов.<br>
+ Если MyNameIsIgor считает мою реализацию кривой, то пусть покажет свою, прямую.<br>
А воевать с Qraizer он может сколько ему хочется и где ему хочется.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581891</guid>
        <pubDate>Thu, 12 Mar 2015 15:25:04 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581891</link>
        <description><![CDATA[MyNameIsIgor: Не, нафиг, лучше не надо...]]></description>
        <author>MyNameIsIgor</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581889</guid>
        <pubDate>Thu, 12 Mar 2015 15:18:25 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581889</link>
        <description><![CDATA[Qraizer: Ну вот же, <strong class='tag-b'>MyNameIsIgor</strong>, началось же. :D]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581882</guid>
        <pubDate>Thu, 12 Mar 2015 15:09:32 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581882</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T13:13:05+00:00">12.03.15, 13:13</time></span><div class='quote '>MyNameIsIgor, тема ярко выражена как холиварная. Но перетащить её туда я не могу, SectorbzC не сможет там писать, у него мало тематических сообщений. </div></div><br>
А чего тут холиварного? Что с чем холиварит? Человек тащит идеологию одного языка в другой, при этом реализует всё криво и приправляет графоманскими длиннющими опусами ни о чём.]]></description>
        <author>MyNameIsIgor</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581860</guid>
        <pubDate>Thu, 12 Mar 2015 14:49:18 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581860</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T13:13:05+00:00">12.03.15, 13:13</time></span><div class='quote '>тема ярко выражена как холиварная. Но перетащить её туда я не могу, SectorbzC не сможет там писать, у него мало тематических сообщений. </div></div><br>
А ты ему банку дай и сможет  :whistle:]]></description>
        <author>KILLER</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581759</guid>
        <pubDate>Thu, 12 Mar 2015 13:13:05 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581759</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581523'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T06:02:30+00:00">12.03.15, 06:02</time></span><div class='quote '>Экземпляр класса &quot;работающий&quot; же?</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="2015-03-12T13:35:52+00:00">12.03.15, 13:35</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581609'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T10:27:43+00:00">12.03.15, 10:27</time></span><div class='quote '>А вообще любой тип C++ можно представить как массив байт</div></div>Это верно только для standard-layout классов. Классы могут содержать свои состояния вне своего размещения (типичный пример – статические члены) или полагаться на характеристики исполнительного окружения (типичный пример – открытие файла в конструкторе и закрытие в деструкторе). Кроме того, некоторые аспекты состояния класса зависят от сторонних факторов, и их битовое представление неподконтрольно даже самому классу (типичный пример – хендл того самого открытого в конструкторе файла).<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581609'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T10:27:43+00:00">12.03.15, 10:27</time></span><div class='quote '>А насчёт DLL. ...</div></div>Все те пункты можно смело зачеркнуть и заменить моим кратким &quot;нарушение ODR&quot;. Другое дело, что соблюсти ODR в системе, построенной на DLL, зачастую гораздо сложнее, чем на LIB, но это возможно при должном упорстве. <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="2015-03-12T13:38:03+00:00">12.03.15, 13:38</time></span></span><br>
<strong class='tag-b'>MyNameIsIgor</strong>, тема ярко выражена как холиварная. Но перетащить её туда я не могу, <strong class='tag-b'>SectorbzC</strong> не сможет там писать, у него мало тематических сообщений. <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="2015-03-12T13:39:50+00:00">12.03.15, 13:39</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581672'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Kray74 &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T12:09:40+00:00">12.03.15, 12:09</time></span><div class='quote '>К тому же в C++ всегда была важна производительность...</div></div>Скорее принцип нулевой стоимости. Вот кстати да, как с этом у Objective C?]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581672</guid>
        <pubDate>Thu, 12 Mar 2015 12:09:40 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581672</link>
        <description><![CDATA[Kray74: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581523'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T06:02:30+00:00">12.03.15, 06:02</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581522'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Kray74 &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T05:58:21+00:00">12.03.15, 05:58</time></span><div class='quote '>JoeUser, работающий пример чего? Записи/чтения сырой памяти? </div></div><br>
Ну да. Экземпляр класса &quot;работающий&quot; же? Понимаю, примитивно, но разве нельзя таким же образом инициализировать более сложные структуры, не прибегая к конструкторам? <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="2015-03-12T06:07:12+00:00">12.03.15, 06:07</time></span></span><br>
Это я к тому, что, если зная секретную кухню std::string, можно и его попытаться таким же образом &quot;сконструировать&quot;. Другой вопрос, что это нафик не нужно, но это уже другая песня.</div></div><br>
Нет не работающий, согласно конструктору значение поля должно быть равно 10. У вас этот инвариант не соблюдается.<br>
<br>
Зная секретную кухню конструктора, придется дублировать инициализацию в каждой точке создания объекта. Можно, конечно, но да, нафик не нужно. <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="2015-03-12T12:16:41+00:00">12.03.15, 12:16</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581609'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T10:27:43+00:00">12.03.15, 10:27</time></span><div class='quote '>Новую переменную? <br>
Тогда добавить в структуру такой конструкт: (не проверял, но работать должно, т.е. технически это легко решаемо)</div></div><br>
Напоминаю, что изначально вы задумывали сделать C++ более удобным (если я правильно понял). Приведенный конструкт как-то этой цели не способствует.<br>
К тому же в C++ всегда была важна производительность, а у вас выделения динамической памяти при создании простейшего объекта.]]></description>
        <author>Kray74</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581631</guid>
        <pubDate>Thu, 12 Mar 2015 10:52:03 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581631</link>
        <description><![CDATA[SectorbzC: to <strong class='tag-b'>MyNameIsIgor</strong><br>
<br>
Т.е. вы поняли предназначение ресурса как поржать над теми, кто меньше знает?<br>
Я думаю, что вы поняли не правильно. Если действительно так поняли.<br>
Но я могу ошибаться.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581614</guid>
        <pubDate>Thu, 12 Mar 2015 10:36:16 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581614</link>
        <description><![CDATA[MyNameIsIgor: Скажите, я правильно понимаю, что у <strong class='tag-b'>SectorbzC</strong> просто приступ графомании, изобретения велосипедов с треугольными колёсами и ярко выраженное незнание плюсов, а остальные здесь &quot;чисто для поржать&quot;?]]></description>
        <author>MyNameIsIgor</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581609</guid>
        <pubDate>Thu, 12 Mar 2015 10:27:43 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581609</link>
        <description><![CDATA[SectorbzC: to <strong class='tag-b'>Kray74</strong><br>
<br>
<strong class='tag-b'>Новую переменную? </strong><br>
Тогда добавить в структуру такой конструкт: (не проверял, но работать должно, т.е. технически это легко решаемо)<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">&nbsp;</div><div class="code_line">#include &#60;stdio.h&#62; &nbsp; &nbsp; &nbsp;/* printf, scanf, puts */</div><div class="code_line">#include &#60;stdlib.h&#62; &nbsp; &nbsp; /* realloc, free, exit, NULL */</div><div class="code_line">#include &#60;memory.h&#62; &nbsp; &nbsp; /* memset, memcpy */</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 T</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct Data</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int x; // по умолчанию</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float y;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;double z;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;char pch[32];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;short any_count;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;struct SAny</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;long id;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;intptr_t ptr;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} * any_arr;</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp;} data_;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;T ( T::Data * _newd_ = 0 )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;/// по умолчанию</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;data_ = (T::Data) { 15,87.f,150.f,&quot;DefaultS&quot;, 0,0 };</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;double * new_var = new double (365.563f);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;T::Data::SAny new_any;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new_any.id = 5; // t_list &#60;double&#62;::ID</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new_any.ptr = (intptr_t) new_var;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/// по примеру: http://www.cplusplus.com/reference/cstdlib/realloc/</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Data::SAny * more = (T::Data::SAny*) realloc ( data_.any_arr, data_.any_count+1 * sizeof(T::Data::SAny) );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( more )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data_.any_arr = more;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data_.any_count++;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data_.any_arr[data_.any_count-1] = new_any; /// КОПИРОВАНИЕ, а не...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} /// else throw ex (&quot;КАРАУЛ realloc НЕ СРАБОТАЛ&quot;, __FILE__,__LINE__);</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; &nbsp; &nbsp;if ( _newd_ ) data_ = (*_newd_);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;~T()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( data_.any_arr )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memset ( &amp;data_.any_arr,0,data_.any_count * sizeof ( T::Data::SAny ) );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;free ( data_.any_arr );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;memset ( &amp;data_,0,sizeof ( T::Data ) );</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">///</div><div class="code_line">&nbsp;&nbsp; &nbsp;template &#60;class U&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void add ( U * _newvar_ )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;T::Data::SAny new_any;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new_any.id = 10; // t_list &#60;U&#62;::ID</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new_any.ptr = (intptr_t) _newvar_;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Data::SAny * more = (T::Data::SAny*) realloc ( data_.any_arr, data_.any_count+1 * sizeof(T::Data::SAny) );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( more )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data_.any_arr = more;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data_.any_count++;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data_.any_arr[data_.any_count-1] = new_any;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} /// else throw ex (&quot;КАРАУЛ realloc НЕ СРАБОТАЛ&quot;, __FILE__,__LINE__);</div><div class="code_line">&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">int main()</div><div class="code_line">{</div><div class="code_line">/*</div><div class="code_line">char any [ sizeof (std::string) ]; /// malloc( ... );</div><div class="code_line">std::string * pstr = new (&amp;any) std::string(); /// после этого any и pstr могут указывать на разные участки памяти,</div><div class="code_line">/// учитывая &quot;заголовки&quot;, табл вирт функ, размер типа, размер массива... всё может быть в заголовке объекта типа...</div><div class="code_line">*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;T t;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;Press ENTER to EXIT!&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cin.get();</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div></div></div><br>
<br>
+ эту SAny можно создать и вне типа, тогда бесящие двоеточия писать не нужно будет.<br>
+ SAny точно так же можно писать в std контейнер (т.к. не содержит С++ типов затруднений с выравниванием быть не должно, поэтому realloc).<br>
+ Там ещё необходимо предусмтреть доступ к элементу массива<br>
- либо по enum,<br>
- либо по строковому имени,<br>
- либо по структуруе с id,строковым именем и т.д.,<br>
- по &quot;контрольной сумме&quot; из строки (или как оно называется забыл уже, <a class='tag-url' href='http://en.wikipedia.org/wiki/Jenkins_hash_function' target='_blank'>хэш-число</a>)<br>
- или ещё как-то.<br>
<br>
to <strong class='tag-b'>Qraizer</strong><br>
<br>
С помощью malloc и realloc можно (нужно же память выделить). Хотя выразился не математически корректно.<br>
<br>
Но потребуется доп. помощь размещающего <strong class='tag-b'>(placement) new</strong><br>
А вообще любой тип C++ можно представить как массив байт (и это, <strong class='tag-b'>кстати</strong>, позволяет создать поток-БД (<strong class='tag-b'>супераллокатор</strong>) с доступом к хранимому в &quot;двоичной форме&quot; элементу по ID типа + серийник экземпляра).<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">char any [ sizeof (std::string) ]; /// malloc( ... );</div><div class="code_line">std::string * pstr = new (&amp;any) std::string(); /// после этого any и pstr могут указывать на разные участки памяти, </div><div class="code_line">/// учитывая &quot;заголовки&quot;, табл вирт функ, размер типа, размер массива... всё может быть в заголовке объекта типа...</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>только после этого деструктор &quot;вручную&quot; вызывать придётся. </strong> (выравнивание не производится.)<br>
Или освобождать память memset(). Вместо деструктора. - Что не даёт гаранти т.к. заголовок или табл вирт функ или ссылка на неё может записаться компиляторам куда угодно и это освобождено не будет. За корректное освобождение всего отвечает деструктор/delete.<br>
Поэтому структуры Си можно создавать/освобождать методами Си. С++ лучше не стоит. <strong class='tag-b'>Pod/no pod</strong> типы.<br>
<br>
<strong class='tag-b'>А тут:</strong> <a class='tag-url' href='http://ideone.com/bpMQps' target='_blank'>http://ideone.com/bpMQps</a><br>
<br>
Это ряд ли. Т.к. невозможно учесть &quot;размер заголовка&quot; и &quot;хвостики&quot;, который установит компилятор (разные компиляторы - разный заголовок + в заголовок объета может затесаться заголовок массива, который хранится в заголовке 1 объекта массива...)<br>
<br>
Можно копировать с помощью = (знака равенства) или memcpy.<br>
Но не всякий объект можно создать с помощью такого копирования (табл. вирт. функ, &quot;особо изощрённые заголовки&quot; и &quot;дебаговые хвостики&quot;, &quot;объекты созданные в конструкторе в динамич памяти&quot; всё может потеряться при таком копировании, зависит от реализации в компиляторе). такой метод лучше применять к Си-сруктурам.<br>
Да и с автоматич. вызовом деструктора что? Тоже не ясно.<br>
<br>
Теоретически.<br>
<br>
<strong class='tag-b'>А насчёт DLL.</strong> <a class='tag-url' href='http://irrlicht.ru/forum/viewtopic.php?f=23&t=941#p13013' target='_blank'>Ну тут разное пишут.</a> (Можно ли пользовать STL(или объекты C++) в DLL?) Т.е. STL нарушает ODR, получается.<br>
<br>
to <strong class='tag-b'>JoeUser</strong><br>
<br>
Понятно. Информации очень мало.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581523</guid>
        <pubDate>Thu, 12 Mar 2015 06:02:30 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581523</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581522'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Kray74 &#064; <time class="tag-quote__quoted-time" datetime="2015-03-12T05:58:21+00:00">12.03.15, 05:58</time></span><div class='quote '>JoeUser, работающий пример чего? Записи/чтения сырой памяти? </div></div><br>
Ну да. Экземпляр класса &quot;работающий&quot; же? Понимаю, примитивно, но разве нельзя таким же образом инициализировать более сложные структуры, не прибегая к конструкторам? <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="2015-03-12T06:07:12+00:00">12.03.15, 06:07</time></span></span><br>
Это я к тому, что, если зная секретную кухню std::string, можно и его попытаться таким же образом &quot;сконструировать&quot;. Другой вопрос, что это нафик не нужно, но это уже другая песня.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581522</guid>
        <pubDate>Thu, 12 Mar 2015 05:58:21 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581522</link>
        <description><![CDATA[Kray74: <strong class='tag-b'>JoeUser</strong>, работающий пример чего? Записи/чтения сырой памяти?]]></description>
        <author>Kray74</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581521</guid>
        <pubDate>Thu, 12 Mar 2015 05:52:48 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581521</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581491'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T20:24:39+00:00">11.03.15, 20:24</time></span><div class='quote '>поэтому нет вызова конструктора == нет объекта; и наоборот: создание &quot;нужной структуры&quot; подразумевает вызов и успешную отработку конструктора.</div></div><br>
<br>
Я накидал корявенький, но работающий пример - <a class='tag-url' href='http://ideone.com/bpMQps' target='_blank'>это тут</a>. Глянь, пожалуйста.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581491</guid>
        <pubDate>Wed, 11 Mar 2015 20:24:39 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581491</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581461'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T18:40:06+00:00">11.03.15, 18:40</time></span><div class='quote '>Разве нельзя создать нужную структуру в памяти и произвести приведение типов? ...</div></div>О чём вопрос-то? Примерный ответ может быть такой: время жизни экземпляра класса начинается с момента возврата управления из его конструктора, поэтому нет вызова конструктора == нет объекта; и наоборот: создание &quot;нужной структуры&quot; подразумевает вызов и успешную отработку конструктора. Т.к. ни malloc(), ни realloc() о конструкторах ничего не знают, они не могут использоваться иначе нежели для предварительного резервирования региона памяти под объект, но не создания самого объекта. Исключение составляют только объекты с тривиальными конструкторами.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581461'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T18:40:06+00:00">11.03.15, 18:40</time></span><div class='quote '>... Присвоить переменной адрес вручную созданной структуры?</div></div>Использование объекта до начала его времени жизни есть неопределённое поведение. Из этого правила нет исключений. До того, как конструктор не приведёт в порядок отведённый под объект регион памяти, превратив мусор в нём в инвариантное состояние, работа с таким недообъектом сродни использованию неинициализированной переменной, только ещё хуже, ибо одно дело неопределённое значение переменной, итог операций с ней хотя бы можно предсказать, совсем другое неопределённое состояние объекта, реализация методов которого вообще говоря чёрный ящик.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581461</guid>
        <pubDate>Wed, 11 Mar 2015 18:40:06 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581461</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581405'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T15:34:46+00:00">11.03.15, 15:34</time></span><div class='quote '>С помощью malloc и realloc нельзя создать std::string, можно только зарезервировать место под него.</div></div><br>
<br>
Заранее бъю челом ... вельми понеже, паки-паки, иже херувимы (С)  :P Разве нельзя создать нужную структуру в памяти и произвести приведение типов?  Присвоить переменной адрес вручную созданной структуры?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581389'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T14:49:56+00:00">11.03.15, 14:49</time></span><div class='quote '>Насчёт MOC было бы интересно. Что это и с чем его едят?<br>
Какие существуют способы расширения возможностей прекомпиляции?<br>
Или это свой язык-компилятор писать, что для Qt и осуществлено?</div></div><br>
<br>
Qt решили что стандартного С++ им мало, и ввели ряд своих &quot;спецификаторов&quot;. Типа сигнал, слот, коннект, дисконнект ... Все это достаточно удобно вливается в синтаксис обычного С++. Но после предкомпиляции <a class='tag-url' href='http://qt-project.org/doc/qt-4.8/moc.html' target='_blank'>MOC-ом</a> (старая дока, но концепцию тянет) получается бог-весть-что. Но это работает, и весьма неплохо. Расширений &quot;предкомпиляции&quot; не существует, QT по сути авторитарно расширили спецификацию стандарта С++. (Кстати минус им - пользуются расширением файлов *.cpp незаконно&#33; Сделали бы *.moc, вопросов бы не было)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581389'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T14:49:56+00:00">11.03.15, 14:49</time></span><div class='quote '>И если так, то зачем? Если уже существует Obj C, где это реализовано?<br>
Не проще ли было воспользоваться возможностями Obj C?</div></div><br>
<br>
Qt - это &quot;надстройка&quot; над C++, Obj C -  это &quot;надстройка&quot; над C. ИМХО, понятия близкие, но несовместимые. Хотя верю, если бы разработчики Qt решили за основной инструмент взять ANSI C, то к Obj C они бы и пришли. Но, увы, движение - параллельное.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581405</guid>
        <pubDate>Wed, 11 Mar 2015 15:34:46 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581405</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581389'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T14:49:56+00:00">11.03.15, 14:49</time></span><div class='quote '>Действительно, гораздо понятнее, малотрудозатратно определять иниц. перем. как-то так:<br>
...</div></div>А теперь перепутай инициализаторы местами в списке. Или пропусти один при подготовке своего _newd_. Или внеси туда агрегат. Вложенный в другой.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581389'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T14:49:56+00:00">11.03.15, 14:49</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">        /// типы созданные с помощью new, malloc, realloc</div><div class="code_line">        /// (тот же std::string) невозможно передавать из dll в dll (разные</div><div class="code_line">        /// адресные пространства), ...</div></ol></div></div></div></div><br>
</div></div>С помощью malloc и realloc нельзя создать std::string, можно только зарезервировать место под него. Из dll в dll можно передавать всё, если не нарушается ODR. Если нарушается, то программа неверна сама по себе, без всяких dll или lib. Разные адресные пространства подразумевают наличие нескольких различных программ. Стандарт языка не описывает подобные конгломераты, это должно выполняться посредством API используемых ОСей или в конце концов third-party библиотеками.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581395</guid>
        <pubDate>Wed, 11 Mar 2015 15:11:01 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581395</link>
        <description><![CDATA[Kray74: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400278&view=findpost&p=3581389'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SectorbzC &#064; <time class="tag-quote__quoted-time" datetime="2015-03-11T14:49:56+00:00">11.03.15, 14:49</time></span><div class='quote '>Действительно, гораздо понятнее, малотрудозатратно определять иниц. перем. как-то так:</div></div><br>
А если я захочу добавить в класс еще одну переменную?]]></description>
        <author>Kray74</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581389</guid>
        <pubDate>Wed, 11 Mar 2015 14:49:56 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581389</link>
        <description><![CDATA[SectorbzC: Насчёт MOC было бы интересно. Что это и с чем его едят?<br>
Какие существуют способы расширения возможностей прекомпиляции?<br>
Или это свой язык-компилятор писать, что для Qt и осуществлено?<br>
И если так, то зачем? Если уже существует Obj C, где это реализовано? <br>
Не проще ли было воспользоваться возможностями Obj C?<br>
<br>
Действительно, гораздо понятнее, малотрудозатратно определять иниц. перем. как-то так:<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class T</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct Data</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int x;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float y;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;double z;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;char pch[64];</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;Data data_;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;T ( T::Data * _newd_ = 0 )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;/// по умолчанию</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;data_ = (T::Data) { 15,87.f,150.f,&quot;DefaultS&quot; };</div><div class="code_line">&nbsp;&nbsp; &nbsp;/// если пользователь инициировал:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( _newd_ ) data_ = (*_newd_);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// типы созданные с помощью new, malloc, realloc</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// (тот же std::string) невозможно передавать из dll в dll (разные</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// адресные пространства), значит в любом случае типы созданные</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// new, malloc, realloc было бы полезно помечать как &quot;в динамич. памяти&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// и в каком адресном протранстве (id dll) к тому же....</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></div></div><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">А в учебниках С++ чему учат? Тому, что нужно по 1 переменной &quot;прищёлкивать&quot;? И всё переписывать по 2-3 раза заново, определяя один и тот же класс?<br>
Копировать из тела класса копипастом, заменять точки с запятыми - одними запятыми, потом всё заново: брать каждую переменную в скобочки, двоеточие, потом запятые...<br>
А при описани нового типа - опять всё заново.<br>
Что-то оно как-то.... &quot;есть как надо&quot; что ли? И &quot;есть методы для тех, от кого отделаться надо, а если невозможно, то пусть на неудобъях ломаются и ничего толком в итоге&quot; чтоли?<br>
<br>
И вроде бы есть хороший язык... но никто не расскажет как нужно на нём что-то делать, чтобы не просто труд потратить, но и результат получить.<br>
И все говорят о <em class='tag-i'>&quot;быстром развитии постоянн. меняющ. совр. технологий&quot;</em>, при этом мечтают о типах по void*, а они реализованы <em class='tag-i'>в Obj C в 1983...</em> как-то уже, то есть... и это имеет коммерческое применение десятилетиями... но новичкам говорят, что &quot;это не правильно и не нужно&quot;... и программисты Си &quot;с коммерческой точки зрения&quot; никому ненужны, хотя Mac OS, Cocoa, - вот же они.<br>
<br>
Какое-то такое впечатление. Непонятное.</div></div><br>
<br>
Конечный вопрос: Что легче?<br>
Легче взять компилятор Obj C и написать все необходимыепорты к OGL и вообще всему (свой &quot;фреймворк к win/linux&quot;)?<br>
Или легче взять Obj C++, подцепить к существующим кодам? Пишут ещё, что расширение файлов Obj C *.m, а Obj C++ *.mm. Но нигде не написано, что нужно сделать чтобы перейти с одного на другое, просто файл переимновать или ещё что-то нужно?<br>
<br>
Или проще реализовать принципы Obj C в C++ и пользовать? Пока склоняюсь к последнему.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581165</guid>
        <pubDate>Tue, 10 Mar 2015 22:08:05 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3581165</link>
        <description><![CDATA[JoeUser: Возможна ли смена парадигмы-принципа без смены компилятора? Утверждать на 100% не буду, слишком много парадигм и языков. Но удачные примеры есть. Если парочку навскидку:<br><br>1) Фреймворк Qt. Расширяет синтаксис &quot;своего&quot; С++ посредством предкомпиляции, используя MOC. Таким образом, к примеру, появляется возможность использования сигналов и слотов, прямо в описаниях и реализации классов.<br><br>2) Язык Perl. Изначально - процедурно-ориентированный. Но возможности языка позволяют достаточно нехитрым способом конструировать классы и использовать парадигму ООП там, где ее изначально не было.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3580971</guid>
        <pubDate>Tue, 10 Mar 2015 12:17:21 +0000</pubDate>
        <title>Objective C в С++?</title>
        <link>https://forum.sources.ru/index.php?showtopic=400278&amp;view=findpost&amp;p=3580971</link>
        <description><![CDATA[SectorbzC: <strong class='tag-b'>1. <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=174041&view=findpost&p=3580789' target='_blank'>Objective C как язык.</a></strong><br>
<br>
<strong class='tag-b'>2. <a class='tag-url' href='http://irrlicht.ru/forum/viewtopic.php?f=23&t=1422' target='_blank'>Obj C to C++ откуда пришла идея?</a></strong><br>
<br>
<strong class='tag-b'>3. Общие теоретические принципы:</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><br>
<strong class='tag-b'>1.</strong> <em class='tag-i'>Тип можно представить как <strong class='tag-b'>массив</strong> (или список) переменных и функций.</em><br>
<br>
<strong class='tag-b'>2.</strong> <em class='tag-i'>Если этот принцип дополнить принципом objective C</em> (он же слот/сигнал, он же «принцип win API», он же рецийвер-рефлектор Иррлихта, он же <a class='tag-url' href='https://ru.wikipedia.org/wiki/SFML' target='_blank'>sf::Event SFML</a>).<br>
То тип уже можно представить как «чёрный ящик» содержащий переменные, управление которыми осуществляется посредством функций.<br>
Это управление осуществляется с помощью единственной ф-ции «reflect» принимающий «события» или «сигналы» и содержащая «отражающую матрицу», то есть массив или список «функций реакции». <br>
<br>
<br>
<strong class='tag-b'>3.</strong> <em class='tag-i'>То есть из 2 первых принципов следует:</em><br>
<strong class='tag-b'>а)</strong> то, что существует необходимость лишь в массиве функций. Массив переменных уже избыточен;<br>
<strong class='tag-b'>б)</strong> переменные можно представить не массивом, а структурой Си (для облегчения манипуляций с ними как с единым целым, применительно к Иррлихту: вместо Си структуры просто берётся указатель на ноду иди элемент – имеем оригинальный паттерн Proxy);<br>
<strong class='tag-b'>в)</strong> тогда классу 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">template &#60;class T, class U&#62;</div><div class="code_line">void reflect ( U &amp; _selfData_, T &amp; _SMessageEvent_ ) </div><div class="code_line">{</div><div class="code_line">/// матрица отражающая событие</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>4.</strong> <em class='tag-i'>Следствия.</em><br>
а) В отличие от обычного порядка определений ф-ций класса такой подход теоретически позволят <strong class='tag-b'>«добавлять классу функции налету»</strong> (то есть после его определения).<br>
<br>
<strong class='tag-b'>б)</strong> Частично отпадает необходимость в вирт. Наследовании и кастах, теперь класс представляет собой «конструктор» состоящий из различных комбинаций элементов, в первую очередь отражающих функций и переменных. Сигнал (message, event, функтор) отделён от слота и может «приниматься» слотами объектов различных типов. Слот может добавляться типу после его определения. Наличие функций и переменных класса можно проверить. Можно идентифицировать класс или получить информацию о нём через наличие опред. ф-ций или их комбинации (для этого даже не нужно знать тип объекта&#33;);<br>
<br>
<strong class='tag-b'>5.</strong> <em class='tag-i'>Вышеописанное – это принципы. Дальше реализации «технологии».</em><br>
А реализована она может быть несколькими способами (возможно даже описаны не все):<br>
<strong class='tag-b'>а)</strong> с помощью switch/case (подход из Иррлихта) или определения элемента в массива по ID;<br>
<strong class='tag-b'>б)</strong> с помощью виртуального наследования или [массива + enum-ератов];<br>
<strong class='tag-b'>в)</strong> с помощью частич. специализации шаблонов и списка функторов.<br>
<br>
Последний метод:<br>
<strong class='tag-b'>а)</strong> в принципе, быстр, так как ветвление с «выбором класса по типу» переносится  на этап компиляции; <br>
<strong class='tag-b'>б)</strong> позволяет добавлять типу ф-ции в любой момент, уже после его объявления;<br>
<strong class='tag-b'>в)</strong> чтобы функтор имел доступ к приватным переменным класса они просто передаются ему Си-структорой или указателем на ноду Иррлихта. В функции reflection класса. То есть ф-тор принимает 2 переменные структуру данных типа и «событие» или «message» – как Си структуру или же другой функтор.<br>
</div></div><br>
<br>
<strong class='tag-b'>Чутка «флуда» по <a class='tag-url' href='https://ru.wikipedia.org/wiki/%CC%E0%F0%F8%E0%EB%E8%ED%E3' target='_blank'>маршалингу</a>/скриптам, GUI:</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><br>
<strong class='tag-b'>1.</strong> Так как в программировании не существует других данных кроме цифровых и текстовых, то при сведении данных к тексту выгоднее использовать скриптовый порт (что облегчит и сохранение/загрузку данных и их передачу текстовым GUI). <br>
<br>
<strong class='tag-b'>2.</strong> И для <a class='tag-url' href='https://ru.wikipedia.org/wiki/%CC%E0%F0%F8%E0%EB%E8%ED%E3' target='_blank'>маршалинга</a> текстовых и для маршаллинга числовых данных удобнее всего использовать <strong class='tag-b'>потоки C++</strong> (std::stringstream). Текстовые для сведения к текстовым данным, они же <strong class='tag-b'>предоставляют наиболее удобный инструментарий для парсинга-обработки текста</strong>. И числовые для сведения к цифровой форме. Структуры Си содержащие простые Си-данные можно загонять в числовой (например файловый) поток «целиком».<br>
<br>
<strong class='tag-b'>3.</strong> Хотя для работы с «сериализованными» данными было бы удобно иметь специальную «потоковую БД», некий «ускоренный/оптимизированный» аналог std::map (по парам ключ-значение). Или что-то вроде этого. Суть – БД (осущ. быструю работу с упорядоченными, универсал. (сведённ. к единой форме хранения) данными).<br>
<br>
<strong class='tag-b'>4.</strong> Данные GUI оч. удобно хранить в HTML + CSS (на худой конец XML). Парсинг данных к XML/HTML и обратно (суть сериализовать данные из контролов, записать в HTML БД, потом считать оттуда, записать обратно в контрол) удобнее всего осуществлять средствами скриптов <strong class='tag-b'><a class='tag-url' href='http://habrahabr.ru/post/115825/' target='_blank'>поддерживающих регулярные выражения</a></strong> (<a class='tag-url' href='https://ru.wikipedia.org/wiki/Регулярные_выражения' target='_blank'>или</a>) (Lua, JavaScript: <a class='tag-url' href='https://developers.google.com/v8/intro' target='_blank'>V8</a>, Пайтон (Python) и т. д.)<br>
</div></div><br>
<br>
<strong class='tag-b'>4. <span class='tag-u'>Релизация принципа Obj C посредством частичной специализации шаблонов C++</span>:</strong><br>
(компилировалось minGW 441, code::blocks, winXP SP1, <em class='tag-i'><strong class='tag-b'>необходима поддержка компилятором частичной специализации шаблонов</strong></em>)<br>
(но в теории должно компилироваться на любом компиляторе)<br>
<br>
Файл <strong class='tag-b'>TObjectiveTFR.h</strong> (type functor-reflector MSG)<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">#ifndef TOBJECTIVETFR_H_INCLUDED</div><div class="code_line">#define TOBJECTIVETFR_H_INCLUDED</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">&nbsp;</div><div class="code_line">/// сначала создаёт eventmsg. Его задача &quot;соединить&quot;</div><div class="code_line">/// &quot;внутренности класса&quot; с внешним процессом, например ф-цией динамической библиотеки</div><div class="code_line">/// даже если она не содержит переменных структура должна существовать</div><div class="code_line">/// т.к. именно в ней хранится &quot;возвращаемый результат&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">/// START namespace tfr</div><div class="code_line">namespace tfr /// type functor-reflector MSG</div><div class="code_line">{</div><div class="code_line">/// то, что необходимо всем структурам...</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct tfr_mini</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bool isExists;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void exists ( bool _isExists_ ) { isExists = _isExists_; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bool exists () const { return isExists; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tfr_mini() { exists (true); }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void check ( const char * _file_, std::size_t _line_)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( ! isExists )</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::cout &#60;&#60; &quot;ERR: [tfr_list&#60;T&#62;]: Eventmsg not exist!&quot; &#60;&#60; &quot;\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[FILE] = [&quot; &#60;&#60; _file_ &#60;&#60; &quot;]\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[LINE] = [&quot; &#60;&#60; _line_ &#60;&#60; &quot;]\n&quot; &#60;&#60; std::endl;</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;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">/// результат сведения данных типа к тексту</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct SDataAsText : public tfr_mini</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::string str;</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">/// получить данны TObjective типа</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct SGetSet : public tfr_mini</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TObjective::SData data_;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bool isSet;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SGetSet() { isSet = true; data_ = (TObjective::SData) { 0.f,0.f,0.f }; }</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void getset ( TObjective::SData &amp; _data_ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( isSet )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_data_ = data_;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else /// get</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data_ = _data_;</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">/// результат операции сложения</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct SAdd : public tfr_mini</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float result;</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">///</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct SNull : public tfr_mini</div><div class="code_line">&nbsp;&nbsp; &nbsp;{};</div><div class="code_line">}</div><div class="code_line">/// END namespace tfr</div><div class="code_line">&nbsp;</div><div class="code_line">#endif // TOBJECTIVETFR_H_INCLUDED</div></ol></div></div></div></div><br>
</div></div><br>
<br>
Файл <strong class='tag-b'>TObjective.h</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">#ifndef TOBJECTIVE_H_INCLUDED</div><div class="code_line">#define TOBJECTIVE_H_INCLUDED</div><div class="code_line">&nbsp;</div><div class="code_line">/// Эмуляция-симуляция Obj C типа в C++</div><div class="code_line">&nbsp;&nbsp; &nbsp;class TObjective</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;struct SData</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{ float x,y,z; }; /// все переменные класса</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;SData data_;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;template &#60; class T &#62; struct tfr_list /// type functor-reflectors list</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/// default result (if this T not add in tfr_list )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static void exec ( SData &amp; _data_,T &amp; _eventmsg_ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ _eventmsg_.exists( false ); }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TObjective() { data_ = (TObjective::SData) { 5.f,10.f,15.f }; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;~TObjective() { data_ = (TObjective::SData) { 0.f,0.f,0.f }; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;///</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;template &#60; class U &#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void rf ( U &amp; _eventmsg_ &nbsp;) // reflect</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tfr_list &#60; U &#62;::exec( data_,_eventmsg_ );</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">#endif // TOBJECTIVE_H_INCLUDED</div></ol></div></div></div></div><br>
</div></div><br>
<br>
Файл <strong class='tag-b'>TObjective.cpp</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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;TObjective.h&quot;</div><div class="code_line">#include &quot;TObjectiveTFR.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">///</div><div class="code_line">&nbsp;</div><div class="code_line">/// START [SDataAsText]</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;&#62; struct TObjective::tfr_list &#60; tfr::SDataAsText &#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static void exec ( TObjective::SData &amp; _data_, &nbsp;tfr::SDataAsText &amp; _eventmsg_ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::stringstream s;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s &#60;&#60; &quot;[START TObjective]\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[x] \t= [&quot; &#60;&#60; _data_.x &#60;&#60; &quot;] \t= [float]\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[y] \t= [&quot; &#60;&#60; _data_.y &#60;&#60; &quot;] \t= [float]\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[z] \t= [&quot; &#60;&#60; _data_.z &#60;&#60; &quot;] \t= [float]\n&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[MSG] \t= [tfr::SDataAsText]\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[MSG] \t= [tfr::SGetSet]\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[MSG] \t= [tfr::SAdd]\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;[END TObjective]\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_eventmsg_.str = s.str();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}; /// tfr_SDataAsText; // в экземпляре можно сконстр. список ф-ций типа</div><div class="code_line">&nbsp;</div><div class="code_line">/// END [SDataAsText]</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">/// START [SGetSet]</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;&#62; struct TObjective::tfr_list &#60; &nbsp;tfr::SGetSet &#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static void exec ( TObjective::SData &amp; _data_, tfr::SGetSet &amp; _eventmsg_ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_eventmsg_.getset( _data_ );</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">/// END [SGetSet]</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">/// START [SAdd]</div><div class="code_line">&nbsp;&nbsp; &nbsp;template&#60;&#62; struct TObjective::tfr_list &#60; tfr::SAdd &#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static void exec ( TObjective::SData &amp; _data_, tfr::SAdd &amp; _eventmsg_ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_eventmsg_.result = _data_.x + _data_.y + _data_.z;</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">/// END [SAdd]</div></ol></div></div></div></div><br>
</div></div><br>
<br>
Несколько тестов в <strong class='tag-b'>main.cpp</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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 &quot;TObjective.cpp&quot;</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">/// при сздании новых файлов заголовок дублируется, менятся лишь имя файла И (!!! внимание !!!) структура-набор данных!)</div><div class="code_line">&nbsp;</div><div class="code_line">/// несколько тестов напоследок</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">/// тестовый obj C тип</div><div class="code_line">&nbsp;&nbsp; &nbsp;TObjective obj;</div><div class="code_line">&nbsp;</div><div class="code_line">/// создать события</div><div class="code_line">&nbsp;&nbsp; &nbsp;tfr::SAdd add_msg;</div><div class="code_line">&nbsp;&nbsp; &nbsp;tfr::SGetSet getset_msg;</div><div class="code_line">&nbsp;&nbsp; &nbsp;tfr::SDataAsText asText_msg;</div><div class="code_line">&nbsp;</div><div class="code_line">/// последовательно &quot;отправить&quot; их типу, получить реакцию, отобразить</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( asText_msg );</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; asText_msg.str &#60;&#60; &quot;\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( add_msg );</div><div class="code_line">&nbsp;&nbsp; &nbsp;add_msg.check( __FILE__, __LINE__ );</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;result = &quot; &#60;&#60; add_msg.result &#60;&#60; &quot;\n\n&quot;; // 30</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;getset_msg.data_ = (TObjective::SData) { 30.f,35.f,35.f };</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( getset_msg );</div><div class="code_line">&nbsp;&nbsp; &nbsp;getset_msg.check( __FILE__, __LINE__ );</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( add_msg );</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( asText_msg );</div><div class="code_line">&nbsp;&nbsp; &nbsp;asText_msg.check( __FILE__, __LINE__ );</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; asText_msg.str &#60;&#60; endl;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;getset_msg.data_ = (TObjective::SData) { 100.f,100.f,100.f };</div><div class="code_line">&nbsp;&nbsp; &nbsp;getset_msg.isSet = false; // get</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( getset_msg );</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;x = &quot; &#60;&#60; getset_msg.data_.x &#60;&#60; &quot;\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &#60;&#60; &quot;y = &quot; &#60;&#60; getset_msg.data_.y &#60;&#60; &quot;\n&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &#60;&#60; &quot;z = &quot; &#60;&#60; getset_msg.data_.z &#60;&#60; &quot;\n\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;getset_msg.data_ = (TObjective::SData) { 100.f,100.f,100.f };</div><div class="code_line">&nbsp;&nbsp; &nbsp;getset_msg.isSet = true; // set</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( getset_msg );</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( add_msg );</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;result = &quot; &#60;&#60; add_msg.result &#60;&#60; &quot;\n\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">/* /// ошибка компиляции: всё правильно (проверка на этапе комп.)</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct SNULL</div><div class="code_line">&nbsp;&nbsp; &nbsp;{} snull;</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( snull );</div><div class="code_line">*/</div><div class="code_line">/// 2 вариант ошибки: посылка необрабатываемого сообщения</div><div class="code_line">&nbsp;&nbsp; &nbsp;tfr::SNull snull;</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj.rf( snull );</div><div class="code_line">&nbsp;&nbsp; &nbsp;snull.check( __FILE__, __LINE__ );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;Press ENTER to exit!&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cin.get();</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><br>
</div></div><br>
<br>
<strong class='tag-b'>5. <span class='tag-u'>Реализация принципа Obj C посредством класса как массива модулей периода исполнения:</span></strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><br>
Другой вариант это:<br>
<strong class='tag-b'>1.</strong> <em class='tag-i'>Добавление в класс С++ <strong class='tag-b'>Си-массива SAny * elem_arr</strong> имеющего вид:</em><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">struct SAny</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned t_id;</div><div class="code_line">&nbsp;&nbsp; &nbsp;char t_name [64];</div><div class="code_line">&nbsp;&nbsp; &nbsp;void * o_ptr;</div><div class="code_line">&nbsp;</div><div class="code_line">/// это или а) ф-ция или б) тип C++ c конструктором и его аргументами</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned char f_args; /// вряд ли больше 256 арг...</div><div class="code_line">&nbsp;&nbsp; &nbsp;SAny * fa_arr;</div><div class="code_line">};</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>2.</strong> <em class='tag-i'>Ф-ция reflection () не на шаблонах, а на ID.</em><br>
<strong class='tag-b'>3.</strong> <em class='tag-i'>Т.е. класс - <span class='tag-u'>это массив переменных и функций, без различий между перем. и функ.</span></em><br>
<strong class='tag-b'>4.</strong> <em class='tag-i'>Что позволит &quot;автоматизировать&quot; составление массива перем и функц.</em> (отображ. внутр структ. Obj C класса)<br>
<strong class='tag-b'>5.</strong> <em class='tag-i'>Остаётся лишь реализовать рассчёт ID один из возможных вариантов</em> которого:<br>
<strong class='tag-b'>5.1-</strong> <em class='tag-i'>На этапе комилляции:</em><br>
<a class='tag-url' href='http://irrlicht.ru/forum/viewtopic.php?f=23&t=941&start=10#p16429' target='_blank'>Как добавить ID типу/классу, если изначально ID у него нет?</a><br>
<br>
<strong class='tag-b'>5.2</strong> <em class='tag-i'>На этапе исполнения:</em><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; &nbsp;int t_id = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;SAny type_t;</div><div class="code_line">///</div><div class="code_line">&nbsp;&nbsp; &nbsp;class T</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SAny &amp; my_type;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;T()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: my_type ( type_t )</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">/// а где-то здесь, уже после опред. класса T,</div><div class="code_line">/// например, в конструкторе фабрики (или</div><div class="code_line">/// конструкторе функтора-вирт конструктора),</div><div class="code_line">/// type_t инициализируется значениями,</div><div class="code_line">/// учитывая определение класса T</div><div class="code_line">/// type_t = (SAny) { t_id++,&quot;T&quot;, ...</div></ol></div></div></div></div><br>
</div></div><br>
<br>
<strong class='tag-b'>===================================</strong><br>
<br>
Такая вот C++ поэзия. Надо быстрей записать, пока не настигла амнезия.<br>
Жаль об этом всём в книгах C++ ни слова. <strong class='tag-b'>Ни слова <a class='tag-url' href='https://ru.wikipedia.org/wiki/Objective-C' target='_blank'>c 1983</a>?</strong><br>
Меж тем трудосберегающий синтаксис Obj C во всю применяется в коммерческих разработках Apple, макинтош, <a class='tag-url' href='http://habrahabr.ru/post/107126/' target='_blank'>Mac OS</a>.<br>
Как так? Вот незадача.]]></description>
        <author>SectorbzC</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	