<?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[Problem mit Kontruktor der eigene Methode aufruft]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe 2 Klasen geschrieben: Modell und ah64Modell. ah64Modell erbt von Modell.<br />
(Diese Klassen sollen ein Objekt aus einer *.obj Datei laden, was auch funktioniert)</p>
<pre><code class="language-cpp">#pragma once

class Modell
{
protected: 

	typedef struct			{

		float x,		
			y,		
			z;		
	} Koordinaten, Normale;

public:
	Modell(char *filename);								
     ~Modell();					
     virtual void darstellen(float zeit)=0;			

	int getAnzahl_VertexKoordinaten();					
    int getAnzahl_TexturKoordinaten();
	int getAnzahl_Normale();
	int getAnzahl_Polygone(int modell);

	int get_Last_Error();							
	bool ObjectLoader(char *filename);		
         bool Erzeuge_List();

};
</code></pre>
<pre><code class="language-cpp">#include &quot;Modell.h&quot;

#pragma once

class ah64Modell :public Modell
{
   float rotorstellung_oben;
   float rotorstellung_hinten;

public:
   ah64Modell(char *filename);
   void darstellen(float zeit);

};
</code></pre>
<p>Nun habe ich ein komisches verhalten im Konstruktor der Klasse von der geerbt wird(Superklasse):</p>
<pre><code class="language-cpp">Modell::Modell(char *filename)   			
{
	error=0;									
    displayList=0;
	t.VertexKoordinatenCount=0;				 
	t.TexturKoordinatenCount=0;	
	t.NormaleCount=0;	
	t.TeilmodelCount=0;
	kuenstlich_erhoeht=false;
	if (!ObjectLoader(filename) &amp;&amp; error==0) {error=10;}
	Erzeuge_List();                                       //Hier ist das Problem!!!!!!!!!!!
}
</code></pre>
<p>Ich rufe die Superklasse im Konstruktor der erbenden Klasse folgendermaßen auf:</p>
<pre><code class="language-cpp">ah64Modell::ah64Modell(char *filename):Modell(filename)
{
	tex.LoadGLTextures(L&quot;AH64 Textur.bmp&quot;);
	rotorstellung_oben=0;
	rotorstellung_hinten=0;
}
</code></pre>
<p>Das Problem ist nun, das im dem Konstruktor der Superklasse die letzte Zeile</p>
<pre><code class="language-cpp">Erzeuge_List();
</code></pre>
<p>einfach nicht angesprungen wird. Ich habe es mit dem Debugger getestet.<br />
Ich erzeuge die Objekte folgendermaßen:</p>
<pre><code class="language-cpp">ah64Modell *m; 
m = new ah64Modell(&quot;ah64.obj&quot;);
</code></pre>
<p>Das komische ist, dass wenn ich die Methode Erzeuge_List() von außerhalb aufrufe, dann funktioniert alles wie es soll:</p>
<pre><code class="language-cpp">ah64Modell *m; 
m = new ah64Modell(&quot;ah64.obj&quot;);
m-&gt;Erzeuge_List();
</code></pre>
<p>Anmerkung: Jeder Aufruf einer eigenen Methode im Konstruktor der Superklasse funktioniert nicht richtig. Auch beim Aufruf von ObjectLoader wird Code einfach ignoriert (in der Methode, aber sie wird wenigstens angesprungen).<br />
Woran liegt das?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218487/problem-mit-kontruktor-der-eigene-methode-aufruft</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 05:31:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218487.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Jul 2008 14:02:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Kontruktor der eigene Methode aufruft on Mon, 21 Jul 2008 14:04:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe 2 Klasen geschrieben: Modell und ah64Modell. ah64Modell erbt von Modell.<br />
(Diese Klassen sollen ein Objekt aus einer *.obj Datei laden, was auch funktioniert)</p>
<pre><code class="language-cpp">#pragma once

class Modell
{
protected: 

	typedef struct			{

		float x,		
			y,		
			z;		
	} Koordinaten, Normale;

public:
	Modell(char *filename);								
     ~Modell();					
     virtual void darstellen(float zeit)=0;			

	int getAnzahl_VertexKoordinaten();					
    int getAnzahl_TexturKoordinaten();
	int getAnzahl_Normale();
	int getAnzahl_Polygone(int modell);

	int get_Last_Error();							
	bool ObjectLoader(char *filename);		
         bool Erzeuge_List();

};
</code></pre>
<pre><code class="language-cpp">#include &quot;Modell.h&quot;

#pragma once

class ah64Modell :public Modell
{
   float rotorstellung_oben;
   float rotorstellung_hinten;

public:
   ah64Modell(char *filename);
   void darstellen(float zeit);

};
</code></pre>
<p>Nun habe ich ein komisches verhalten im Konstruktor der Klasse von der geerbt wird(Superklasse):</p>
<pre><code class="language-cpp">Modell::Modell(char *filename)   			
{
	error=0;									
    displayList=0;
	t.VertexKoordinatenCount=0;				 
	t.TexturKoordinatenCount=0;	
	t.NormaleCount=0;	
	t.TeilmodelCount=0;
	kuenstlich_erhoeht=false;
	if (!ObjectLoader(filename) &amp;&amp; error==0) {error=10;}
	Erzeuge_List();                                       //Hier ist das Problem!!!!!!!!!!!
}
</code></pre>
<p>Ich rufe die Superklasse im Konstruktor der erbenden Klasse folgendermaßen auf:</p>
<pre><code class="language-cpp">ah64Modell::ah64Modell(char *filename):Modell(filename)
{
	tex.LoadGLTextures(L&quot;AH64 Textur.bmp&quot;);
	rotorstellung_oben=0;
	rotorstellung_hinten=0;
}
</code></pre>
<p>Das Problem ist nun, das im dem Konstruktor der Superklasse die letzte Zeile</p>
<pre><code class="language-cpp">Erzeuge_List();
</code></pre>
<p>einfach nicht angesprungen wird. Ich habe es mit dem Debugger getestet.<br />
Ich erzeuge die Objekte folgendermaßen:</p>
<pre><code class="language-cpp">ah64Modell *m; 
m = new ah64Modell(&quot;ah64.obj&quot;);
</code></pre>
<p>Das komische ist, dass wenn ich die Methode Erzeuge_List() von außerhalb aufrufe, dann funktioniert alles wie es soll:</p>
<pre><code class="language-cpp">ah64Modell *m; 
m = new ah64Modell(&quot;ah64.obj&quot;);
m-&gt;Erzeuge_List();
</code></pre>
<p>Anmerkung: Jeder Aufruf einer eigenen Methode im Konstruktor der Superklasse funktioniert nicht richtig. Auch beim Aufruf von ObjectLoader wird Code einfach ignoriert (in der Methode, aber sie wird wenigstens angesprungen).<br />
Woran liegt das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1550987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1550987</guid><dc:creator><![CDATA[Andreas XXL]]></dc:creator><pubDate>Mon, 21 Jul 2008 14:04:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Kontruktor der eigene Methode aufruft on Mon, 21 Jul 2008 21:45:17 GMT]]></title><description><![CDATA[<p>Also bei mir funktioniert das hier:</p>
<pre><code class="language-cpp">class base{
protected:
	void foo (){std::cout &lt;&lt; &quot;base::foo&quot; &lt;&lt; std::endl;
		bar ();	
	}

	void bar (){std::cout &lt;&lt; &quot;base::bar&quot; &lt;&lt; std::endl;}
};

class derived :public base{
public:
	derived (){
		foo ();
	}
};
};
</code></pre>
<p>...</p>
<pre><code class="language-cpp">derived d;
</code></pre>
<p>Problematisch sollten solche Sachen erst werden, wenn du virtual benutzt, aber da sehe ich (und dein Compiler) kein Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551249</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 21 Jul 2008 21:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Kontruktor der eigene Methode aufruft on Mon, 21 Jul 2008 21:56:46 GMT]]></title><description><![CDATA[<p>Entweder hast du hier was falsch abgetippt/vereinfacht/... und der &quot;böse&quot; Code ist hier nichtmehr ersichtlich, oder aber der Fehler entsteht ganz woanders.<br />
Wenn du irgendwo Speicher überschreibst (z.B. mit memcpy aber auch gerne mit Arrayzugriffen mit zu grossem oder negativem Index) dann könnte das alles mögliche an seltsamem Verhalten bewirken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551253</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 21 Jul 2008 21:56:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Kontruktor der eigene Methode aufruft on Tue, 22 Jul 2008 03:39:32 GMT]]></title><description><![CDATA[<blockquote>
<p>Das Problem ist nun, das im dem Konstruktor der Superklasse die letzte Zeile</p>
<pre><code class="language-cpp">Erzeuge_List();
</code></pre>
<p>einfach nicht angesprungen wird. Ich habe es mit dem Debugger getestet.<br />
Ich erzeuge die Objekte folgendermaßen:</p>
</blockquote>
<p>Nun das Problerm könnte in dieser Zeile:</p>
<pre><code class="language-cpp">if (!ObjectLoader(filename) &amp;&amp; error==0) {error=10;}
</code></pre>
<p>liegen was passiert im ObjectLoader.. gibts da drine ne exception etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551317</guid><dc:creator><![CDATA[HumanCompiler]]></dc:creator><pubDate>Tue, 22 Jul 2008 03:39:32 GMT</pubDate></item></channel></rss>