<?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[pointer auf klasse]]></title><description><![CDATA[<p>hallo,</p>
<p>ich habe 2 klasse und will einen pointer auf die erste setzen und danach mit delete wieder freigeben. eigentlich ganz einfach, aber ich bekomme eine fehlermeldung beim starten des programms (der kompiler sagt nichts). hier die fehlermeldung:<a href="http://img212.imageshack.us/i/unbenanntkxf.jpg/" rel="nofollow">http://img212.imageshack.us/i/unbenanntkxf.jpg/</a></p>
<p>und hier der code:</p>
<pre><code class="language-cpp">class cls_alteklasse {
...
}
class bla{
private: 
 cls_alteklasse *p1;
public:
 bla(){}
 ~bla() { delete p1; }
 void Funktion () {
 p1 = new cls_alteklasse(...); // hier crashts
 }
</code></pre>
<p>danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248277/pointer-auf-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 03:33:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248277.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Aug 2009 14:48:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to pointer auf klasse on Sat, 22 Aug 2009 14:48:18 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>ich habe 2 klasse und will einen pointer auf die erste setzen und danach mit delete wieder freigeben. eigentlich ganz einfach, aber ich bekomme eine fehlermeldung beim starten des programms (der kompiler sagt nichts). hier die fehlermeldung:<a href="http://img212.imageshack.us/i/unbenanntkxf.jpg/" rel="nofollow">http://img212.imageshack.us/i/unbenanntkxf.jpg/</a></p>
<p>und hier der code:</p>
<pre><code class="language-cpp">class cls_alteklasse {
...
}
class bla{
private: 
 cls_alteklasse *p1;
public:
 bla(){}
 ~bla() { delete p1; }
 void Funktion () {
 p1 = new cls_alteklasse(...); // hier crashts
 }
</code></pre>
<p>danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764901</guid><dc:creator><![CDATA[kunze]]></dc:creator><pubDate>Sat, 22 Aug 2009 14:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to pointer auf klasse on Sat, 22 Aug 2009 14:53:40 GMT]]></title><description><![CDATA[<p>Crasht es wirklich dort?</p>
<p>Ich hätte eher gedacht, dass es im Destruktor <code>~bla()</code> zum Laufzeitfehler kommt. Schliesslich initialisierst du den Zeiger im Konstruktor nicht (du setzt ihn nicht einmal auf 0), und eventuell vergisst du, <code>Funktion()</code> aufzurufen. Dann hättest du <code>delete</code> auf einen nicht-initialisierten Zeiger, das ist nicht so gut.</p>
<p>Ansonsten zeig mal den Konstruktor von <code>cls_alteklasse</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764905</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 22 Aug 2009 14:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to pointer auf klasse on Sat, 22 Aug 2009 14:55:35 GMT]]></title><description><![CDATA[<p>Ich kann mir nicht vorstellen, warum es ausgerechnet an dieser Stelle knallen sollte. Es sei denn, der Ctor von cls_alteklasse macht nicht mit.</p>
<p>In deinem Beispiel setzt du den Wert von p1 in bla::bla() nicht auf 0. Das könnte dann in bla::~bla() zu Problemen führen, aber die Stelle hast du ja nicht gekennzeichnet.</p>
<p>BTW: Wie wär's, wenn du dir beim Schreiben des (Beispiel-)Codes ein bischen mehr Mühe gäbst?</p>
<p>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764910</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Sat, 22 Aug 2009 14:55:35 GMT</pubDate></item><item><title><![CDATA[Reply to pointer auf klasse on Sat, 22 Aug 2009 15:09:14 GMT]]></title><description><![CDATA[<p>kunze schrieb:</p>
<blockquote>
<p>p1 = new cls_alteklasse(...); // hier crashts</p>
</blockquote>
<p>wenn ich new weglasse (also den pointer) und das ganze durch</p>
<pre><code class="language-cpp">cls_alteklasse p1(..);
</code></pre>
<p>dann gehts.... sry wegen meinen mickrigen code. hier mal den ganzen code:</p>
<pre><code class="language-cpp">class cls_alteKlasse
{
private:
		HINSTANCE hInst;
public:
	cls_alteKlasse(){ }
	~cls_alteKlasse() { }
	cls_alteKlasse(	WNDCLASSEX FensterName,
	HWND CreateWindowName, HWND alteshWnd,
	int x_Position, int y_Position,
	char reOli, char obOun,
	WNDPROC CallbackName){

	hInst = (HINSTANCE) GetWindowLong(alteshWnd, GWL_HINSTANCE);
	FensterName.cbSize = sizeof(WNDCLASSEX);
	FensterName.style = CS_HREDRAW | CS_VREDRAW;
	FensterName.lpfnWndProc = CallbackName;
	FensterName.cbClsExtra = 0;
	FensterName.cbWndExtra = 0;
	FensterName.hInstance = hInst;
	FensterName.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	FensterName.hCursor = LoadCursor(NULL, IDC_ARROW);
	FensterName.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
	FensterName.lpszMenuName = NULL;
	FensterName.lpszClassName = (LPCSTR)CallbackName;
	FensterName.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
	if(!RegisterClassEx(&amp;FensterName))
	{
		MessageBox(0, &quot;Fehler beim erstellen des Fensters&quot;, &quot;Fehler!&quot;, MB_ICONEXCLAMATION | MB_OK);
		system(&quot;Pause&quot;);
	}
	CreateWindowName = CreateWindow((LPCSTR)CallbackName, NULL, WS_CHILDWINDOW, fnk_Width(x_Position, reOli), fnk_Height(y_Position, obOun), x_Position, y_Position, alteshWnd, NULL, hInst, NULL);
	ShowWindow(CreateWindowName, SW_SHOW);
	UpdateWindow(CreateWindowName);
	}
};
class cls_neueKlasse
{
	private:
		cls_alteKlasse *p1;
	public:
		cls_neueKlasse(){ p1= 0;}
		~cls_neueKlasse() { delete p1; }
		void ZeigerAufKlasse() {		
	        p1 = new cls_neuesFenster();
		}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1764924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764924</guid><dc:creator><![CDATA[mascerade]]></dc:creator><pubDate>Sat, 22 Aug 2009 15:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to pointer auf klasse on Sat, 22 Aug 2009 15:17:38 GMT]]></title><description><![CDATA[<p>Das ist mit Sicherheit nicht der Code, der den Fehler verursacht.<br />
Warum soll ich also darin einen Fehler suchen?</p>
<p>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764929</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Sat, 22 Aug 2009 15:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to pointer auf klasse on Sat, 22 Aug 2009 15:22:05 GMT]]></title><description><![CDATA[<p>eigentlich ist das der code der den fehler verursachen MUSS, naja hier mal die vollständige klasse, mit unnötigen codezeilen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">class cls_neueKlasse
{
	private:
		void* p_text;
		unsigned int textSize;
		cls_alteKlasse *p1;
		char *archivName;
		char *finde;
		char *pw;
	public:
		cls_neueKlasse(){ p_text = 0; 
						  textSize = 0;
						  archivName = &quot;C:/Users/Moe/Desktop/Desktop.zip&quot;;
						  pw = &quot;alpine&quot;;
						  p1 = 0;}
		~cls_neueKlasse() { delete[] p_text;
							delete p1; }
		void ZeigerAufKlasse(WNDCLASSEX WinName, HWND WindowName, HWND oldHwnd, int x, int y, char reOli, char obOun, WNDPROC CallbackName, char *Argument) {
			int result = readArchivedFile(archivName, &quot;info.txt&quot;, pw, &amp;p_text, &amp;textSize);
			if(result) {
				MessageBox(0, &quot;Fehler!&quot;, &quot;Fehler!&quot;, MB_ICONEXCLAMATION | MB_OK);
			} else {
				std::string DateiText(static_cast&lt;char*&gt;(p_text), textSize);
				if(DateiText.find(Argument) != std::string::npos)
				{
					p1 = new cls_alteKlasse(WinName, WindowName, oldHwnd, fnk_Width(x, reOli), fnk_Height(y, obOun), reOli, obOun, CallbackName);
				}
			}
		}
};
</code></pre>
<p>und aufrufen tu ich das alles</p>
<pre><code class="language-cpp">cls_neueKlasse Test1;
		Test1.ZeigerAufKlasse(Win1, WindowT1, hWnd, 0, 0, 'r', 'o', TL1, &quot;played: 0;&quot;);
		Test1.~cls_neueKlasse();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1764932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764932</guid><dc:creator><![CDATA[mascerade]]></dc:creator><pubDate>Sat, 22 Aug 2009 15:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to pointer auf klasse on Sat, 22 Aug 2009 15:24:31 GMT]]></title><description><![CDATA[<p>@ mascerade:<br />
Bitte poste nächstes Mal unter gleichem Namen oder identifiziere dich wenigstens, sonst kann schnell Verwirrung entstehen.</p>
<p><strong>Warum rufst du den Destruktor manuell auf?</strong> Erst kürzlich meinte auch jemand, er müsse das tun. Lass die Zeile weg, der Destruktor wird bereits beim Verlassen des Scopes aufgerufen, bzw. bei <code>delete</code> , wenn du mit <code>new</code> angefordert hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764935</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 22 Aug 2009 15:24:31 GMT</pubDate></item><item><title><![CDATA[Reply to pointer auf klasse on Sat, 22 Aug 2009 15:27:07 GMT]]></title><description><![CDATA[<p>achso^^... jetzt gehts! danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764936</guid><dc:creator><![CDATA[mascerade]]></dc:creator><pubDate>Sat, 22 Aug 2009 15:27:07 GMT</pubDate></item></channel></rss>