<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[suche hilfe mit boost_thread]]></title><description><![CDATA[<p>hi leute!</p>
<p>bin gerade dabei mich in threads einzuarbeiten. benutze dafür boost_thread. konnte es auch installieren und erste erfolge verbuchen.</p>
<p>folgender code funktioniert:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;boost/thread/thread.hpp&gt;

using namespace std;

void foo()
{
	for(int i=0; i&lt;10000; i++)
		cout &lt;&lt; &quot;huhu: &quot; &lt;&lt; i &lt;&lt; endl;
}

void bar()
{
	for(int i=0; i&lt;10000; i++)
		cout &lt;&lt; &quot;lala: &quot; &lt;&lt; i &lt;&lt; endl;
}

int main()
{
	boost::thread t1(&amp;foo); // Thread-Objekt t1 erstellen und foo() starten.
	bar(); // t1 läuft gleichzeitig weiter, während bar() aufgerufen wird!
}
</code></pre>
<p>und jetzt zu meinem problem! wenn ich die funktionen in einer klasse schreibe und diese dann in der main im thread starten will, dann bekomme ich immer eine fehlermeldung. mein code sieht wie folgt aus:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;boost/thread/thread.hpp&gt;

using namespace std;

class test
{
public:
        test();
        ~test();
        void foo();
        void bar();
};

test::test()
{
}

test::~test()
{
}

void test::foo();
{
	for(int i=0; i&lt;10000; i++)
		cout &lt;&lt; &quot;huhu: &quot; &lt;&lt; i &lt;&lt; endl;
}

void test::bar()
{
	for(int i=0; i&lt;10000; i++)
		cout &lt;&lt; &quot;lala: &quot; &lt;&lt; i &lt;&lt; endl;
}

int main()
{
        test t;
	boost::thread t1(test::foo); 
	t.bar();
}
</code></pre>
<p>wäre über hilfe sehr erfreut!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179781/suche-hilfe-mit-boost_thread</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 12:01:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179781.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Apr 2007 10:54:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 10:54:19 GMT]]></title><description><![CDATA[<p>hi leute!</p>
<p>bin gerade dabei mich in threads einzuarbeiten. benutze dafür boost_thread. konnte es auch installieren und erste erfolge verbuchen.</p>
<p>folgender code funktioniert:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;boost/thread/thread.hpp&gt;

using namespace std;

void foo()
{
	for(int i=0; i&lt;10000; i++)
		cout &lt;&lt; &quot;huhu: &quot; &lt;&lt; i &lt;&lt; endl;
}

void bar()
{
	for(int i=0; i&lt;10000; i++)
		cout &lt;&lt; &quot;lala: &quot; &lt;&lt; i &lt;&lt; endl;
}

int main()
{
	boost::thread t1(&amp;foo); // Thread-Objekt t1 erstellen und foo() starten.
	bar(); // t1 läuft gleichzeitig weiter, während bar() aufgerufen wird!
}
</code></pre>
<p>und jetzt zu meinem problem! wenn ich die funktionen in einer klasse schreibe und diese dann in der main im thread starten will, dann bekomme ich immer eine fehlermeldung. mein code sieht wie folgt aus:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;boost/thread/thread.hpp&gt;

using namespace std;

class test
{
public:
        test();
        ~test();
        void foo();
        void bar();
};

test::test()
{
}

test::~test()
{
}

void test::foo();
{
	for(int i=0; i&lt;10000; i++)
		cout &lt;&lt; &quot;huhu: &quot; &lt;&lt; i &lt;&lt; endl;
}

void test::bar()
{
	for(int i=0; i&lt;10000; i++)
		cout &lt;&lt; &quot;lala: &quot; &lt;&lt; i &lt;&lt; endl;
}

int main()
{
        test t;
	boost::thread t1(test::foo); 
	t.bar();
}
</code></pre>
<p>wäre über hilfe sehr erfreut!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273086</guid><dc:creator><![CDATA[boost_thread_noob]]></dc:creator><pubDate>Wed, 25 Apr 2007 10:54:19 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 10:57:26 GMT]]></title><description><![CDATA[<p>Und wir dürfen jetzt raten, welcher Fehler da kommt - richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273089</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 25 Apr 2007 10:57:26 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 11:05:25 GMT]]></title><description><![CDATA[<p>sorry für doppel post. aber ich vergass den fehler zu posten.</p>
<p>also folgender fehler erscheint dann:</p>
<p>/usr/include/boost/function/function_template.hpp instantiated from »boost::function0&lt;R, Allocator&gt;::function0(Functor, typename boost::enable_if_c&lt;boost::type_traits::ice_not&lt;boost::is_integral&lt;Functor&gt;::value&gt;::value, int&gt;::type) [with Functor = void (test::*)(), R = void, Allocator = std::allocator<a href="boost::function_base" rel="nofollow">boost::function_base</a>]«</p>
<p>und</p>
<p>/usr/include/boost/function/function_template.hpp Fehler: keine passende Funktion für Aufruf von »boost::function0&lt;void, std::allocator<a href="boost::function%5C_base" rel="nofollow">boost::function\_base</a> &gt;::assign_to(void (test::*&amp;)(), boost::detail::function::member_ptr_tag)«</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273093</guid><dc:creator><![CDATA[boost_thread_noob]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:05:25 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 11:07:52 GMT]]></title><description><![CDATA[<p>Naja, dein Code ist ja auch total falsch. Hast einfach ins blaue geraten, wie man es machen könnte. SO geht das natürlich schief. Entweder stellst du einen Funktions-Operator in deiner Klasse bereit und übergibts einfach das Objekt t oder machst sowas:</p>
<pre><code class="language-cpp">boost::thread t1(boost::bind(std::mem_fun(&amp;test::foo), t)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1273094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273094</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:07:52 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 11:06:05 GMT]]></title><description><![CDATA[<p>Also ich rate mal...<br />
Die Adresse einer nicht statischen methode kann man nicht einfach so mit Klasse::methode bekommen oder?<br />
Versuche mal ein '&amp;' davor. Hab leider kein boost hier.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273095</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 11:11:53 GMT]]></title><description><![CDATA[<p>also das mit dem geraten ist schon richtig. ich habe aber nirgens nen beispiel oder was mir helfen könnte gefunden. ich werde mal schaun ob ich es mit deiner sache da hinbekomme!</p>
<p>bin aber wie gesagt anfänger in sachen boost_thread. also bitte mich nicht gleich zerfleischen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273100</guid><dc:creator><![CDATA[boost_thread_noob]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 11:13:20 GMT]]></title><description><![CDATA[<p>bei funktionen bzw. funktionszeigern ist es afaik egal. mann kann schreiben &quot;&amp;funktion&quot; oder einfach &quot;funktion&quot; und verwenden kann man das ebenfalls ohne den dereferenzierungsoperator &quot;*pFunktion()&quot; oder &quot;pFunktion()&quot; bringen also ebenfalls dasselbe ergebnis <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273101</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:13:20 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 11:36:49 GMT]]></title><description><![CDATA[<p>habe das mit</p>
<p>[cpp]</p>
<pre><code>boost::thread t1(boost::bind(std::mem_fun(&amp;test::foo), t)
</code></pre>
<p>mal probiert hat aber so nicht funktioniert. schmeisst mir da eingige sehr lange fehler aus.</p>
<p>habe es jetzt so gelöst das ich mir ne statische funktion geschrieben habe. da klappt das dann auch mit meinem aufruf. ist mit sicherheit nicht der richtige weg aber so klappt es und ich kann erstmal weiter probieren. wäre natürlich über jede weitere lösung dankbar. weil ich will ja lernen!!! achso das mit dem funktionsoperator habe ich nicht probiert, weil ich erlich sagen muss, das ich nicht weiß wie das funzt. bin halt noch ziemlicher neuling und lebe nach dem motto: learn by doing</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273116</guid><dc:creator><![CDATA[boost_thread_noob]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 14:43:16 GMT]]></title><description><![CDATA[<p>Das std::memfun brauchst du nicht. Boost.Bind funktioniert auch ohne!<br />
Mit</p>
<pre><code class="language-cpp">boost::thread t1(boost::bind (&amp;test::foo, t));
</code></pre>
<p>kompilierts anstandslos. Ob es dann läuft (was es hier tut (OSX, gcc4)) ist eine andere Frage. Ich bezweifle, dass man aus zwei Threads gleichzeitig in einen Stream schreiben darf ohne diesen ordentlich zu sperren (edit: das, was hier stand war µll).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273311</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 25 Apr 2007 14:43:16 GMT</pubDate></item><item><title><![CDATA[Reply to suche hilfe mit boost_thread on Wed, 25 Apr 2007 23:01:03 GMT]]></title><description><![CDATA[<p>ja es läuft<br />
boost::bind ist ziemlich cool</p>
<p>man kann sogar sowas machen</p>
<pre><code class="language-cpp">bool nein() { return false; }

template &lt;class F&gt; void test(F f) {
    assert(f());
}

int main () {
    test(!boost::bind(nein));
}
</code></pre>
<p>Sind auch noch andere Operatoren überladen... damit gehen dann so sachen wie</p>
<pre><code class="language-cpp">struct foo {
	int m_id;
	foo(int id) : m_id(id) {}
	int get_id() { return m_id; }
};

int main()
{
	std::vector&lt;foo&gt; bar;
	bar.push_back(foo(100));
	bar.push_back(foo(101));

	std::vector&lt;foo&gt;::iterator it = std::find_if(bar.begin(), bar.end(), boost::bind(&amp;foo::get_id, _1) == 100);
	assert(it == bar.begin());
	it = std::find_if(bar.begin(), bar.end(), boost::bind(&amp;foo::get_id, _1) &gt; 102);
	assert(it == bar.end());
	//...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1273612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273612</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 25 Apr 2007 23:01:03 GMT</pubDate></item></channel></rss>