<?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[Zugriffsverletzung beim Aufruf einer Methode]]></title><description><![CDATA[<p>Hi,</p>
<p>wie der Titel schon sagt, erhalte ich beim Aufruf einer Methode einer Klasse einen Zugriffsverletzungserror.</p>
<p>Hier der Code der Klasse:</p>
<pre><code class="language-cpp">class Toneunit
{
  public:

	//Variablen
	int px, py, tx, ty;
	int spe;
	float ste, len, per;

	//Methoden
	void settarget (int ntx, int nty);
	void draw (void);

	//Konstruktor
	Toneunit (int kpx, int kpy, int kspe);
};
void Toneunit::draw(void)
{
	Form1-&gt;ifield-&gt;Canvas-&gt;Pen-&gt;Color = clBlack;
	Form1-&gt;ifield-&gt;Canvas-&gt;Brush-&gt;Color = clBlack;
	Form1-&gt;ifield-&gt;Canvas-&gt;Rectangle(px-3,py-3,px+3,py+3);
}
</code></pre>
<p>(ifield ist ein TImage)</p>
<p>Und hier wo ich die Methode aufrufe:</p>
<pre><code class="language-cpp">for (i=0; i&lt;numuns; i++)
{
        uns[i]-&gt;draw();
}
</code></pre>
<p>Deklariert hab ich die Instanzen auch:</p>
<pre><code class="language-cpp">Toneunit *uns[10];
</code></pre>
<p>Und auch den Konstruktor aufgerufen habe ich:</p>
<pre><code class="language-cpp">for (i=0; i&lt;numuns; i++)
{
       uns[i] = new Toneunit (random(300),random(300),5);
}
</code></pre>
<p>Ist da irgendwo ein Fehler drin?</p>
<p>mfg<br />
Jakel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208858/zugriffsverletzung-beim-aufruf-einer-methode</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 10:26:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208858.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Mar 2008 17:48:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriffsverletzung beim Aufruf einer Methode on Sun, 23 Mar 2008 17:48:18 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wie der Titel schon sagt, erhalte ich beim Aufruf einer Methode einer Klasse einen Zugriffsverletzungserror.</p>
<p>Hier der Code der Klasse:</p>
<pre><code class="language-cpp">class Toneunit
{
  public:

	//Variablen
	int px, py, tx, ty;
	int spe;
	float ste, len, per;

	//Methoden
	void settarget (int ntx, int nty);
	void draw (void);

	//Konstruktor
	Toneunit (int kpx, int kpy, int kspe);
};
void Toneunit::draw(void)
{
	Form1-&gt;ifield-&gt;Canvas-&gt;Pen-&gt;Color = clBlack;
	Form1-&gt;ifield-&gt;Canvas-&gt;Brush-&gt;Color = clBlack;
	Form1-&gt;ifield-&gt;Canvas-&gt;Rectangle(px-3,py-3,px+3,py+3);
}
</code></pre>
<p>(ifield ist ein TImage)</p>
<p>Und hier wo ich die Methode aufrufe:</p>
<pre><code class="language-cpp">for (i=0; i&lt;numuns; i++)
{
        uns[i]-&gt;draw();
}
</code></pre>
<p>Deklariert hab ich die Instanzen auch:</p>
<pre><code class="language-cpp">Toneunit *uns[10];
</code></pre>
<p>Und auch den Konstruktor aufgerufen habe ich:</p>
<pre><code class="language-cpp">for (i=0; i&lt;numuns; i++)
{
       uns[i] = new Toneunit (random(300),random(300),5);
}
</code></pre>
<p>Ist da irgendwo ein Fehler drin?</p>
<p>mfg<br />
Jakel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479259</guid><dc:creator><![CDATA[Jakel]]></dc:creator><pubDate>Sun, 23 Mar 2008 17:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Aufruf einer Methode on Sun, 23 Mar 2008 21:04:30 GMT]]></title><description><![CDATA[<p>an welcher Stelle im Quellcode kommt denn die Fehlermeldung? verwende am besten den <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39301.html" rel="nofollow">Debugger</a> um die Stelle zu finden</p>
<p>du hast übrigends vergessen den Konstruktor zu posten, aber ansonsten funktioniert der Quellcode, sofern man natürlich erst die Objekte erstellt und dann die Draw-Methode aufruft</p>
<p>und wie groß ist numuns?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479340</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Sun, 23 Mar 2008 21:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Aufruf einer Methode on Mon, 24 Mar 2008 11:22:57 GMT]]></title><description><![CDATA[<p>Sehr unschön ist aber der direkte Aufruf des Formulars über die globale Variable 'Form1'. Besser wäre es, wenn die Formular-Instanz ebenfalls als Konstruktor-Parameter übergeben würde.<br />
Auch die Variablen im public-Teil der Klasse sind kein gutes Design.</p>
<p>Aber wie schon von Linnea gesagt, schau am besten mit dem Debugger alle Variablen durch.</p>
<p>P.S. In C++ benutzt man nicht (void) zur Kennzeichnung von parameterlosen Methoden, sondern einfach ().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479494</guid><dc:creator><![CDATA[~VCL]]></dc:creator><pubDate>Mon, 24 Mar 2008 11:22:57 GMT</pubDate></item></channel></rss>