<?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[Klassen-Problem]]></title><description><![CDATA[<p>Hi,<br />
ich bin komplett neu, was C++ angeht. Habe aber schon einige Erfahrung in Java und PHP.</p>
<p>Nun habe ich folgendes Problem.</p>
<p>Ich habe eine Klasse Menue, welche Klickflächen besitzt.<br />
Nun soll es eine Funktion geben, welche die Klickflächen des Menüs ändert.<br />
In meinem ersten Versuch, soll für das Objekt &quot;Men&quot; die Variable Men.Klick_flaeche[0].von_x geändert werden.</p>
<p>Leider kommt bei mir dort aber immer ein Wert 0 beim auslesen raus.<br />
Kann mir da einer helfen ?</p>
<p>Hier mal mein Code ( main.cpp gekürzt ):</p>
<p>main.cpp</p>
<pre><code class="language-cpp">Menue Men(&quot;Intro&quot;) ;
Men.switch_klick_flaechen_zu( &quot;Startmenue&quot; ) ;
int j = Men.klick_flaechen[0].get_von_x() ; 
OutputText(&quot;Get von : %d&quot; ,j); // Bitte nicht dran stören, gibt mir nur den Text aus.
</code></pre>
<p>Menue.h</p>
<pre><code class="language-cpp">#if !defined(_MENUE_H)
#define _MENUE_H

#include &quot;Klick_flaeche.h&quot;

class Menue {
public:
	char* status;	
	bool have_to_init ;
	int klick_flaechen_anzahl ;
	Klick_flaeche klick_flaechen[10] ;

	Menue() ;
	Menue( char* new_status ) ;

	void set_status(char* new_status);
	char* get_status();
	void set_klick_flaechen_anzahl ( int new_anzahl ) ;
	int get_klick_flaechen_anzahl() ;
	void switch_klick_flaechen_zu( char* menue ) ;

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

#include &lt;PA9.h&gt;  // PAlib include

Menue::Menue() {
	set_status(&quot;LEER&quot;);
	have_to_init = true ;

}

Menue::Menue(char* new_status) {
	set_status(new_status);
	have_to_init = true ;
}

void Menue::switch_klick_flaechen_zu(char* menue) {
	for ( int i = 0 ; i &lt; sizeof(klick_flaechen) ; i++ ) {
		klick_flaechen[i].~Klick_flaeche() ;
	}

	klick_flaechen[0].set_von_x(64);
	klick_flaechen[0].set_von_y(64);
	klick_flaechen[0].set_nach_x(192);
	klick_flaechen[0].set_nach_y(128);

	if ( menue == &quot;Startmenue&quot; ) {
		set_klick_flaechen_anzahl(1) ;
		klick_flaechen[0].set_von_x(64);
		klick_flaechen[0].set_von_y(64);
		klick_flaechen[0].set_nach_x(192);
		klick_flaechen[0].set_nach_y(128);
	}

}

void Menue::set_klick_flaechen_anzahl( int new_anzahl ) {
	klick_flaechen_anzahl = new_anzahl ;
}

int Menue::get_klick_flaechen_anzahl() {
	return klick_flaechen_anzahl ;
}

void Menue::set_status( char* new_status ) {
	status = new_status ;
}

char* Menue::get_status() {
	return status ;
}
</code></pre>
<p>Klick_Flaeche.h</p>
<pre><code class="language-cpp">#ifndef KLICK_FLAECHE_H_
#define KLICK_FLAECHE_H_

class Klick_flaeche
{
public:
	int von_x;
	int von_y;
	int nach_x;
	int nach_y;

	int get_von_x() ;
	int get_von_y() ;
	int get_nach_x() ;
	int get_nach_y() ;
	void set_von_x(int new_x) ;
	void set_von_y(int new_y) ;
	void set_nach_x(int new_x) ;
	void set_nach_y(int new_y) ;

	Klick_flaeche();
	virtual ~Klick_flaeche();
};

#endif /*KLICK_FLAECHE_H_*/
</code></pre>
<p>Klick_Flaeche.cpp</p>
<pre><code class="language-cpp">#include &quot;Klick_flaeche.h&quot;

Klick_flaeche::Klick_flaeche()
{
	set_von_x(0) ;
	set_von_y(0) ;
	set_nach_x(1) ;
	set_nach_y(1) ;
}

Klick_flaeche::~Klick_flaeche()
{
}

int Klick_flaeche::get_von_x() 
{
	return von_x ;
}

int Klick_flaeche::get_von_y() 
{
	return von_y ;
}

int Klick_flaeche::get_nach_x()
{
	return nach_x ;
}

int Klick_flaeche::get_nach_y()
{
	return nach_y ;
}

void Klick_flaeche::set_von_x(int new_x)
{
	von_x = new_x ;
}

void Klick_flaeche::set_von_y(int new_y)
{
	von_y = new_y ;
}

void Klick_flaeche::set_nach_x(int new_x)
{
	nach_x = new_x ;
}

void Klick_flaeche::set_nach_y(int new_y)
{
	nach_y = new_y ;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/215540/klassen-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 06:54:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215540.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jun 2008 10:33:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen-Problem on Thu, 12 Jun 2008 10:34:38 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich bin komplett neu, was C++ angeht. Habe aber schon einige Erfahrung in Java und PHP.</p>
<p>Nun habe ich folgendes Problem.</p>
<p>Ich habe eine Klasse Menue, welche Klickflächen besitzt.<br />
Nun soll es eine Funktion geben, welche die Klickflächen des Menüs ändert.<br />
In meinem ersten Versuch, soll für das Objekt &quot;Men&quot; die Variable Men.Klick_flaeche[0].von_x geändert werden.</p>
<p>Leider kommt bei mir dort aber immer ein Wert 0 beim auslesen raus.<br />
Kann mir da einer helfen ?</p>
<p>Hier mal mein Code ( main.cpp gekürzt ):</p>
<p>main.cpp</p>
<pre><code class="language-cpp">Menue Men(&quot;Intro&quot;) ;
Men.switch_klick_flaechen_zu( &quot;Startmenue&quot; ) ;
int j = Men.klick_flaechen[0].get_von_x() ; 
OutputText(&quot;Get von : %d&quot; ,j); // Bitte nicht dran stören, gibt mir nur den Text aus.
</code></pre>
<p>Menue.h</p>
<pre><code class="language-cpp">#if !defined(_MENUE_H)
#define _MENUE_H

#include &quot;Klick_flaeche.h&quot;

class Menue {
public:
	char* status;	
	bool have_to_init ;
	int klick_flaechen_anzahl ;
	Klick_flaeche klick_flaechen[10] ;

	Menue() ;
	Menue( char* new_status ) ;

	void set_status(char* new_status);
	char* get_status();
	void set_klick_flaechen_anzahl ( int new_anzahl ) ;
	int get_klick_flaechen_anzahl() ;
	void switch_klick_flaechen_zu( char* menue ) ;

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

#include &lt;PA9.h&gt;  // PAlib include

Menue::Menue() {
	set_status(&quot;LEER&quot;);
	have_to_init = true ;

}

Menue::Menue(char* new_status) {
	set_status(new_status);
	have_to_init = true ;
}

void Menue::switch_klick_flaechen_zu(char* menue) {
	for ( int i = 0 ; i &lt; sizeof(klick_flaechen) ; i++ ) {
		klick_flaechen[i].~Klick_flaeche() ;
	}

	klick_flaechen[0].set_von_x(64);
	klick_flaechen[0].set_von_y(64);
	klick_flaechen[0].set_nach_x(192);
	klick_flaechen[0].set_nach_y(128);

	if ( menue == &quot;Startmenue&quot; ) {
		set_klick_flaechen_anzahl(1) ;
		klick_flaechen[0].set_von_x(64);
		klick_flaechen[0].set_von_y(64);
		klick_flaechen[0].set_nach_x(192);
		klick_flaechen[0].set_nach_y(128);
	}

}

void Menue::set_klick_flaechen_anzahl( int new_anzahl ) {
	klick_flaechen_anzahl = new_anzahl ;
}

int Menue::get_klick_flaechen_anzahl() {
	return klick_flaechen_anzahl ;
}

void Menue::set_status( char* new_status ) {
	status = new_status ;
}

char* Menue::get_status() {
	return status ;
}
</code></pre>
<p>Klick_Flaeche.h</p>
<pre><code class="language-cpp">#ifndef KLICK_FLAECHE_H_
#define KLICK_FLAECHE_H_

class Klick_flaeche
{
public:
	int von_x;
	int von_y;
	int nach_x;
	int nach_y;

	int get_von_x() ;
	int get_von_y() ;
	int get_nach_x() ;
	int get_nach_y() ;
	void set_von_x(int new_x) ;
	void set_von_y(int new_y) ;
	void set_nach_x(int new_x) ;
	void set_nach_y(int new_y) ;

	Klick_flaeche();
	virtual ~Klick_flaeche();
};

#endif /*KLICK_FLAECHE_H_*/
</code></pre>
<p>Klick_Flaeche.cpp</p>
<pre><code class="language-cpp">#include &quot;Klick_flaeche.h&quot;

Klick_flaeche::Klick_flaeche()
{
	set_von_x(0) ;
	set_von_y(0) ;
	set_nach_x(1) ;
	set_nach_y(1) ;
}

Klick_flaeche::~Klick_flaeche()
{
}

int Klick_flaeche::get_von_x() 
{
	return von_x ;
}

int Klick_flaeche::get_von_y() 
{
	return von_y ;
}

int Klick_flaeche::get_nach_x()
{
	return nach_x ;
}

int Klick_flaeche::get_nach_y()
{
	return nach_y ;
}

void Klick_flaeche::set_von_x(int new_x)
{
	von_x = new_x ;
}

void Klick_flaeche::set_von_y(int new_y)
{
	von_y = new_y ;
}

void Klick_flaeche::set_nach_x(int new_x)
{
	nach_x = new_x ;
}

void Klick_flaeche::set_nach_y(int new_y)
{
	nach_y = new_y ;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1527593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527593</guid><dc:creator><![CDATA[Daether]]></dc:creator><pubDate>Thu, 12 Jun 2008 10:34:38 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Problem on Thu, 12 Jun 2008 11:02:23 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ohne jetzt Deinen ganzen Quellcode anzuschauen ist mir eine Sache aufgefallen:<br />
z.B.</p>
<pre><code class="language-cpp">if ( menue == &quot;Startmenue&quot; )
</code></pre>
<p>macht was ganz anderes, als Du meinst - fürchte ich zumindest...<br />
Hier wird die Adresse Deines Übergabeparameters (menue) mit der Adresse des Strings &quot;Startmenue&quot; verglichen (und eben NICHT der Inhalt von menue mit dem String Startmenue&quot;)!<br />
Genauso machst Du in</p>
<pre><code class="language-cpp">void Menue::set_status( char* new_status ) {
    status = new_status ;
}
</code></pre>
<p>einfach eine Zuweisung von Adressen. Entweder Du steigst um auf die Klasse string, oder Du setzt Dich eingehender mit C-Strings (char*) auseinander.</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527624</guid><dc:creator><![CDATA[Ampfing]]></dc:creator><pubDate>Thu, 12 Jun 2008 11:02:23 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Problem on Thu, 12 Jun 2008 11:42:44 GMT]]></title><description><![CDATA[<p>Hi,<br />
werde mich damit mal weiter auseinander setzen. bsp. strcmp() zum vergleichen nutzen, etc.<br />
Allerdings liegt das Problem glaube ich nicht im arbeiten mit Strings/Char-Arrays.</p>
<p>wenn ich die Variable dirket setzte in der Main geht es.</p>
<p>Kann es daran liegen, dass ich in der Menue.cpp, Menue::switch_klick_flaechen_zu<br />
mit klick_flaechen[0].set_von_x(64); nicht auf die reichtige Variable zugreife ?<br />
In Java sollte man immer &quot;this.&quot; nutzen um auf Objekt-eigene-Funktionen zuzugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527679</guid><dc:creator><![CDATA[Daether]]></dc:creator><pubDate>Thu, 12 Jun 2008 11:42:44 GMT</pubDate></item></channel></rss>