<?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=40433&amp;view=findpost&amp;p=263675</guid>
        <pubDate>Mon, 15 Dec 2003 08:39:24 +0000</pubDate>
        <title>Переносимость кода</title>
        <link>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=263675</link>
        <description><![CDATA[JoeUser: <!--QuoteBegin-Flex_Ferrum+15.12.03, 10:32--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> (Flex_Ferrum @ 15.12.03, 10:32)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> В качестве варианта - попробуй boost::signal и boost::connection (http://www.boost.org) <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--><br> Посмотрел. Спасибо. Ну уж больно это громоздко, а получается всего лишь &quot;прокладка&quot; между обычным классом и &quot;событием&quot;, реализуемым вне класса обычной функцией. Я уже смирился <!--emo&;)--><img src='http://forum.sources.ru/html/emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo--> и вместо ссылки на метод, использую ссылку на функцию с передачей указателя на экземпляр класса. Немного некрасиво, но работает.<br><br>Кстати почитал еще программерских форумов - там уж столько перемолото. Но все сходятся к отдному - в дополнение к классу писать функции-события отдельно, не как функции-класса.<br><br>Ну ладо, думаю вопрос закрыт. ]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=263634</guid>
        <pubDate>Mon, 15 Dec 2003 07:32:41 +0000</pubDate>
        <title>Переносимость кода</title>
        <link>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=263634</link>
        <description><![CDATA[Flex_Ferrum:  В качестве варианта - попробуй boost::signal и boost::connection (http://www.boost.org) ]]></description>
        <author>Flex_Ferrum</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262766</guid>
        <pubDate>Sat, 13 Dec 2003 14:15:19 +0000</pubDate>
        <title>Переносимость кода</title>
        <link>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262766</link>
        <description><![CDATA[trainer:  Используй статические функции с первым параметром - указателем на объект. Имеено так фактически и реализуются подобные вещи.<br>Delphi&#39;йские class method - это фактически структура из двух указателей - указатель на метод и указатель на объект класса. ]]></description>
        <author>trainer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262635</guid>
        <pubDate>Sat, 13 Dec 2003 11:17:43 +0000</pubDate>
        <title>Переносимость кода</title>
        <link>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262635</link>
        <description><![CDATA[JoeUser:  <!--QuoteBegin-Fantasist+12.12.03, 20:45--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> (Fantasist &#064; 12.12.03, 20:45)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Да это так. На самом деле и в Делфи можно сказать почти так же, так как в Делфи все классы наследуются от TObject.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br>Все оказалось гораздо хуже <!--emo&:angry:--><img src='http://forum.sources.ru/html/emoticons/mad.gif' border='0' style='vertical-align:middle' alt='mad.gif' /><!--endemo--> <br><br>Не зря таки придумали господа из Борланда описатель <b>__closure</b> для своего ЦБилдера. Именно он полностью заменяет Дельфевый <b>тру-ля-ля of object</b>.<br><br>Разница такова: переменная of object инициализируется функцией <i>экземпляра</i> класса, а то, что я приводил из стандартного С++, функцией класса. Однако самое неприятное, что при описании типа<br><br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1--><br>class SomeClass;<br>typedef bool &#40;SomeClass&#58;&#58;* SomeMethod&#41;&#40;void*&#41;;<br><!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><br>Переменную типа SomeMethod я смогу проинациализировать только теми функциями класса, которые были в SomeClass&#33; Иными словами, если я наследую от SomeClass другой класс и в нем определю новые функции, то ими я <b>не могу</b> проинициализировать переменную типа SomeMethod. Вот мля&#33;<br><br>Пример:<br><br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1--><br>class A;<br>typedef void &#40;A&#58;&#58;* SomeMethod&#41;&#40;&#41;;<br><br>class A {<br>  public&#58;<br>  void FuncA&#40;&#41;{};<br>};<br><br>class B&#58; public A  {<br>  public&#58;<br>  void FuncB&#40;&#41;{};<br>};<br><br>int main&#40;int argc, char* argv&#91;&#93;&#41; {<br> SomeMethod M;<br><br> // &nbsp;следующее компайлер &#34;съедает&#34;<br> M = &amp;B&#58;&#58;FuncA;<br><br> // &nbsp;на следующем ошибка компиляции&#58; <br> // &nbsp;Cannot convert &#39;void&#40;B&#58;&#58;*&#41;&#40;&#41;&#39; to &#39;void&#40;A&#58;&#58;*&#41;&#40;&#41;&#39;<br> M = &amp;B&#58;&#58;FuncB;<br><br> ...<br><!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><br> <!--emo&:angry:--><img src='http://forum.sources.ru/html/emoticons/mad.gif' border='0' style='vertical-align:middle' alt='mad.gif' /><!--endemo--> ]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262319</guid>
        <pubDate>Fri, 12 Dec 2003 17:45:19 +0000</pubDate>
        <title>Переносимость кода</title>
        <link>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262319</link>
        <description><![CDATA[Fantasist:  <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin--><b>JoeUser</b>, 12.12.03, 11:44<br>В случае же C++, для инициализации нельзя использовать функциb разных классов если классы не имеют общего предка с SomeClass? Или я ошибаюсь?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br><br>  Да это так. На самом деле и в Делфи можно сказать почти так же, так как в Делфи все классы наследуются от TObject. <br> ]]></description>
        <author>Fantasist</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262218</guid>
        <pubDate>Fri, 12 Dec 2003 14:34:11 +0000</pubDate>
        <title>Переносимость кода</title>
        <link>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262218</link>
        <description><![CDATA[dimedrol:  Ну а на с++ эти делегаты реализуються с пощью шаблонов. ]]></description>
        <author>dimedrol</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262208</guid>
        <pubDate>Fri, 12 Dec 2003 14:22:53 +0000</pubDate>
        <title>Переносимость кода</title>
        <link>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262208</link>
        <description><![CDATA[Demo_S:  1) можно использовать функции разных классов. только нужно помнить, ччто у фукнции класса первый аргумент, коорый не пишется но подразумевается - указатель на класс. пресловутый this.<br>2) не совсем понял.<br>callback фукнция - это самая обычная фукнция, адрес которой дают другой фукнции.<br><br>ЗЫ в C# есть специальная фигня, называется delegate.  ]]></description>
        <author>Demo_S</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262105</guid>
        <pubDate>Fri, 12 Dec 2003 11:44:59 +0000</pubDate>
        <title>Переносимость кода</title>
        <link>https://forum.sources.ru/index.php?showtopic=40433&amp;view=findpost&amp;p=262105</link>
        <description><![CDATA[JoeUser:  Хочется &quot;перенести&quot; еще чуток кода с Дельфи в портируемый С++... <br><br>Вопрос №1: <b>Что делать с объявлениями такого вот типа</b><br><br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->SomeMethod = function&#40;P&#58; Pointer&#41;&#58; Boolean of object;<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><br>Пытаюсь нечто подобное найти в <u>стандартном</u> C++:<br><br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->class SomeClass;<br>typedef bool &#40;SomeClass&#58;&#58;* SomeMethod&#41;&#40;void*&#41;;<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><br>Но, мне кажется, это не совсем то&#33; В первом случае, в Дельфи, можно переменную такого вот типа SomeMethod инициализировать любыми методами (конечно сходного формата объявления) любого класса.<br><br>В случае же C++, для инициализации нельзя использовать функциb разных классов если классы не имеют общего предка с SomeClass? Или я ошибаюсь?<br><br>Вопрос №2: <b>Callback функции</b><br><br>В некоторых обсуждениях я встречал мнения, что &quot;грамотнее&quot; передачу обобщенных действий делать в виде callback-функций, нежели переинициализацией указателя на функцию класса. Ну первое - не совсем понятен механизм как такое можно сделать. А второе - а как же &quot;законченность&quot; функциональности класса? <br><br>Хелп, плиз&#33; У кого какие соображения по поводу всего этого? Может какие примерчики есть грамотные? <!--emo&:unsure:--><img src='http://forum.sources.ru/html/emoticons/unsure.gif' border='0' style='vertical-align:middle' alt='unsure.gif' /><!--endemo--> ]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	