<?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[boost::python: Klassenmethoden Aufrufen?]]></title><description><![CDATA[<p>Hi leute, ich habe ein Problem:<br />
Ich möchte per python eine klassenmethode in c++ aufrufen:</p>
<pre><code>BOOST_PYTHON_MODULE(gHost) {
	def(&quot;registerHandler&quot;, &amp;CPython::RegisterHandler);
}
</code></pre>
<pre><code>void CPython :: RegisterHandler(PyObject *HandlerName, PyObject *PyPointer) {
	char *nHandlerName = PyString_AsString(HandlerName);

	for( vector&lt;CHandler *&gt; :: iterator i = m_Handlers.begin();
		 i != m_Handlers.end(); i++ ) {
			 if( (*i)-&gt;GetName() == nHandlerName ) {
				 (*i)-&gt;RegisterPyFunc(PyPointer);
				 return;
			 }
	}

	NewHandler(nHandlerName);
	RegisterHandler(HandlerName, PyPointer);
}
</code></pre>
<p>Fehlermeldung beim starten der .exe:</p>
<pre><code>Traceback (most recent call last):
  File &quot;C:\Users\Krauzi\Desktop\GHost++ Python\python\__init__.py&quot;, line 3, in &lt;
module&gt;
    test.init()
  File &quot;C:\Users\Krauzi\Desktop\GHost++ Python\python\test.py&quot;, line 8, in init
    gHost.registerHandler( &quot;PlayerJoin&quot;, myFunc )
Boost.Python.ArgumentError: Python argument types in
    gHost.registerHandler(str, function)
did not match C++ signature:
    registerHandler(class CPython {lvalue}, struct _object *, struct _object *)
</code></pre>
<p>Anscheinend gibts deshalb Probleme: <strong>class CPython {lvalue}</strong>. Vermutlich wird beim Aufrufen einer Methode &quot;unsichtbar&quot; der Klassenzeiger mit aufgerufen.</p>
<p>Tja nur wie behebe ich jetzt dieses Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257378/boost-python-klassenmethoden-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 07:44:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257378.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Dec 2009 18:04:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::python: Klassenmethoden Aufrufen? on Sun, 27 Dec 2009 18:18:03 GMT]]></title><description><![CDATA[<p>Hi leute, ich habe ein Problem:<br />
Ich möchte per python eine klassenmethode in c++ aufrufen:</p>
<pre><code>BOOST_PYTHON_MODULE(gHost) {
	def(&quot;registerHandler&quot;, &amp;CPython::RegisterHandler);
}
</code></pre>
<pre><code>void CPython :: RegisterHandler(PyObject *HandlerName, PyObject *PyPointer) {
	char *nHandlerName = PyString_AsString(HandlerName);

	for( vector&lt;CHandler *&gt; :: iterator i = m_Handlers.begin();
		 i != m_Handlers.end(); i++ ) {
			 if( (*i)-&gt;GetName() == nHandlerName ) {
				 (*i)-&gt;RegisterPyFunc(PyPointer);
				 return;
			 }
	}

	NewHandler(nHandlerName);
	RegisterHandler(HandlerName, PyPointer);
}
</code></pre>
<p>Fehlermeldung beim starten der .exe:</p>
<pre><code>Traceback (most recent call last):
  File &quot;C:\Users\Krauzi\Desktop\GHost++ Python\python\__init__.py&quot;, line 3, in &lt;
module&gt;
    test.init()
  File &quot;C:\Users\Krauzi\Desktop\GHost++ Python\python\test.py&quot;, line 8, in init
    gHost.registerHandler( &quot;PlayerJoin&quot;, myFunc )
Boost.Python.ArgumentError: Python argument types in
    gHost.registerHandler(str, function)
did not match C++ signature:
    registerHandler(class CPython {lvalue}, struct _object *, struct _object *)
</code></pre>
<p>Anscheinend gibts deshalb Probleme: <strong>class CPython {lvalue}</strong>. Vermutlich wird beim Aufrufen einer Methode &quot;unsichtbar&quot; der Klassenzeiger mit aufgerufen.</p>
<p>Tja nur wie behebe ich jetzt dieses Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828585</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 27 Dec 2009 18:18:03 GMT</pubDate></item></channel></rss>