<?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[Klasse in Array]]></title><description><![CDATA[<p>Hi.<br />
Ich habe mal wieder ein Problem. Und zwar habe ich eine Klasse, die ich in ein Array packen will. Eigentlich wie immer, doch das komische ist, dass die DLL (also das Programm) abstürzt, sobald ich etwas in den Array packen will. Gleiches beim std::vector - ein Crash.</p>
<p>Wie kann ich das Problem lösen? Da es die einzige Klasse ist, die Daten aus der Python C-API beinhaltet, denke ich, dass es daran liegt.</p>
<p>Hier ist mal die Klasse:</p>
<pre><code class="language-cpp">class CPythonClass
{
public:
	CPythonClass(char *pszName, char *pszRepr, int iSize, PyClass_Dealloc_t pDealloc, PyClass_New_t pyNew, PyClass_Init_t pyInit, char *pszDescription);
	void addMethod(char *pszName, PyCFunction pyCallback, char *pszDescription);
	void addMember(char *pszName, int iType, int iOffset, char *pszDescription);

public:
	PyTypeObject m_pyType;
	char *m_pszName;

private:
	PyMethodDef m_pyMethods[20];
	PyMemberDef m_pyMembers[20];
	int m_iMethodCounter;
	int m_iMemberCounter;
};
</code></pre>
<p>Definition des Arrays oder des Vectors:</p>
<pre><code class="language-cpp">CPythonClass *m_arrClasses[20];
std::vector&lt;CPythonClass*&gt; m_vecClasses;
</code></pre>
<p>Hinzufügen:</p>
<pre><code class="language-cpp">CPythonClass *pClass = new CPythonClass(...);

this-&gt;m_arrClasses[0] = pClass; // Crash
this-&gt;m_vecClasses.push_back(pClass); // Crash
</code></pre>
<p>Gibt es eine Lösung dafür? Woran liegt der Fehler?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255289/klasse-in-array</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 03:38:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255289.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Nov 2009 15:44:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse in Array on Sat, 28 Nov 2009 15:45:36 GMT]]></title><description><![CDATA[<p>Hi.<br />
Ich habe mal wieder ein Problem. Und zwar habe ich eine Klasse, die ich in ein Array packen will. Eigentlich wie immer, doch das komische ist, dass die DLL (also das Programm) abstürzt, sobald ich etwas in den Array packen will. Gleiches beim std::vector - ein Crash.</p>
<p>Wie kann ich das Problem lösen? Da es die einzige Klasse ist, die Daten aus der Python C-API beinhaltet, denke ich, dass es daran liegt.</p>
<p>Hier ist mal die Klasse:</p>
<pre><code class="language-cpp">class CPythonClass
{
public:
	CPythonClass(char *pszName, char *pszRepr, int iSize, PyClass_Dealloc_t pDealloc, PyClass_New_t pyNew, PyClass_Init_t pyInit, char *pszDescription);
	void addMethod(char *pszName, PyCFunction pyCallback, char *pszDescription);
	void addMember(char *pszName, int iType, int iOffset, char *pszDescription);

public:
	PyTypeObject m_pyType;
	char *m_pszName;

private:
	PyMethodDef m_pyMethods[20];
	PyMemberDef m_pyMembers[20];
	int m_iMethodCounter;
	int m_iMemberCounter;
};
</code></pre>
<p>Definition des Arrays oder des Vectors:</p>
<pre><code class="language-cpp">CPythonClass *m_arrClasses[20];
std::vector&lt;CPythonClass*&gt; m_vecClasses;
</code></pre>
<p>Hinzufügen:</p>
<pre><code class="language-cpp">CPythonClass *pClass = new CPythonClass(...);

this-&gt;m_arrClasses[0] = pClass; // Crash
this-&gt;m_vecClasses.push_back(pClass); // Crash
</code></pre>
<p>Gibt es eine Lösung dafür? Woran liegt der Fehler?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814612</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sat, 28 Nov 2009 15:45:36 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Array on Sat, 28 Nov 2009 16:27:19 GMT]]></title><description><![CDATA[<p><code>CPythonClass *m_arrClasses[20];</code><br />
was willst du hiermit machen?<br />
hast du auch an das new gedacht?</p>
<p><code>std::vector&lt;CPythonClass*&gt; m_vecClasses</code><br />
für die ptr gibts nen grund!?</p>
<pre><code class="language-cpp">CPythonClass *pClass = new CPythonClass(...);

this-&gt;m_arrClasses[0] = pClass; // Crash
this-&gt;m_vecClasses.push_back(pClass); // Crash
</code></pre>
<p>Zeig mal die gesamte Fkt und wie du sie aufrufst...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814636</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 28 Nov 2009 16:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Array on Sat, 28 Nov 2009 17:16:22 GMT]]></title><description><![CDATA[<p>Klar gibt es für den Pointer einen Grund. Ich will ja einen Pointer einfügen, damit ich Zugriff auf die Klasse bekomme. Das mache ich schon ewig so und funktioniert auch bestens.</p>
<p>Wieso brauche ich denn beim Array ein new?<br />
Die Instanzen von CPythonClass erzeuge ich erst nach und nach, es sind ja nicht von Anfang an direkt 20 Stück vorhanden.</p>
<p>Hier ist die Funktion, so wie ich sie immer gestalte:</p>
<pre><code class="language-cpp">CPythonClass *CPython::addClass(CPythonClass *pClass)
{
	//this-&gt;m_arrClasses[this-&gt;m_iCounter++] = pClass;
	//this-&gt;m_vecClasses.push_back(pClass);
	return pClass;
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814659</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sat, 28 Nov 2009 17:16:22 GMT</pubDate></item></channel></rss>