<?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[Vererbung und Protectete Werte]]></title><description><![CDATA[<p>Hallo<br />
also ich habe folgendes Problem:<br />
ich bin da bei ein SudokuLösungsProgramm zu schreiben:</p>
<pre><code class="language-cpp">class Sudoku
{
public:

 ...

protected:
 unsigned short int sudokuZiffern[HOEHE][BREITE]; // Beinhaltet die gesammten Daten(Ziffern)

};
</code></pre>
<pre><code class="language-cpp">class KI :public Sudoku
{
public:
   ...
 bool einfacheMethode(int hoehe,int breite);

};
</code></pre>
<p>in der Funktion &quot;einfacheMethode(int hoehe,int breite)&quot; will ich den Wer von &quot;sudokuZiffern[hoehe][breite]&quot; verändern. Das habe ich so realisiert:</p>
<pre><code class="language-cpp">bool KI::einfacheMethode(int hoehe,int breite)
{
  vector&lt;unsigned short int&gt; moeglicheZif=moeglicheZiffern(hoehe,breite);
  ...

  sudokuZiffern[hoehe][breite]=moeglicheZif[0];

  ....
}
</code></pre>
<p>Ich habe aber eine Vorher Nachher Ausgabe gemacht und es Hatt sich nichts an &quot;sudokuZiffern[][]&quot; geändert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Wie kann ich das realisieren (habe auch get- bzw set- Methoden verwendet -&gt; genau das selbe)</p>
<p>PLZ help <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187587/vererbung-und-protectete-werte</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 20:24:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187587.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Jul 2007 14:12:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sat, 21 Jul 2007 14:12:25 GMT]]></title><description><![CDATA[<p>Hallo<br />
also ich habe folgendes Problem:<br />
ich bin da bei ein SudokuLösungsProgramm zu schreiben:</p>
<pre><code class="language-cpp">class Sudoku
{
public:

 ...

protected:
 unsigned short int sudokuZiffern[HOEHE][BREITE]; // Beinhaltet die gesammten Daten(Ziffern)

};
</code></pre>
<pre><code class="language-cpp">class KI :public Sudoku
{
public:
   ...
 bool einfacheMethode(int hoehe,int breite);

};
</code></pre>
<p>in der Funktion &quot;einfacheMethode(int hoehe,int breite)&quot; will ich den Wer von &quot;sudokuZiffern[hoehe][breite]&quot; verändern. Das habe ich so realisiert:</p>
<pre><code class="language-cpp">bool KI::einfacheMethode(int hoehe,int breite)
{
  vector&lt;unsigned short int&gt; moeglicheZif=moeglicheZiffern(hoehe,breite);
  ...

  sudokuZiffern[hoehe][breite]=moeglicheZif[0];

  ....
}
</code></pre>
<p>Ich habe aber eine Vorher Nachher Ausgabe gemacht und es Hatt sich nichts an &quot;sudokuZiffern[][]&quot; geändert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Wie kann ich das realisieren (habe auch get- bzw set- Methoden verwendet -&gt; genau das selbe)</p>
<p>PLZ help <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329804</guid><dc:creator><![CDATA[Rainu]]></dc:creator><pubDate>Sat, 21 Jul 2007 14:12:25 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sat, 21 Jul 2007 14:24:15 GMT]]></title><description><![CDATA[<p>? Also die Werte verändern sich dann wenn dann in dem AI(KI wäre Deutsch -.-) Objekt ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329808</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 21 Jul 2007 14:24:15 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sat, 21 Jul 2007 14:48:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;sudoku.h&quot;
#include &quot;KI.h&quot;
using namespace std;

int main()
{
 KI sudoku;
 sudoku.leseDatenVonEingabe();
 sudoku.schreibeDatenInAusgabe();

 sudoku.einfacheMethode(0,4);
 system(&quot;pause&quot;);
 sudoku.schreibeDatenInAusgabe();

 system(&quot;pause&quot;);
 return 0;
}
</code></pre>
<p>aber die beiden Ausgaben unterscheiden sich nicht.Die Funktion schreibeDatenInAusgabe() schreibt einfach den array in halt auf std::out (formatiert)</p>
<p>PS: schreibeDatenInAusgabe() wird in sudoku-klasse definiert!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329809</guid><dc:creator><![CDATA[Rainu]]></dc:creator><pubDate>Sat, 21 Jul 2007 14:48:06 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sat, 21 Jul 2007 20:16:53 GMT]]></title><description><![CDATA[<p>Rainu schrieb:</p>
<blockquote>
<p>Hallo</p>
<pre><code class="language-cpp">bool KI::einfacheMethode(int hoehe,int breite)
{
  vector&lt;unsigned short int&gt; moeglicheZif=moeglicheZiffern(hoehe,breite);
  ...

  sudokuZiffern[hoehe][breite]=moeglicheZif[0];
  
  ....
}
</code></pre>
<p>Ich habe aber eine Vorher Nachher Ausgabe gemacht und es Hatt sich nichts an &quot;sudokuZiffern[][]&quot; geändert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Rückfrage:<br />
Du hast den Code geändert, so dass da</p>
<pre><code class="language-cpp">printf( &quot;1. sZ[%d][%d] == %d wird zu %d\n&quot;, hoehe, breite, sudokuZiffern[hoehe][breite], moegliche Zif[0] );
  sudokuZiffern[hoehe][breite]=moeglicheZif[0];
  printf( &quot;2. sZ[%d][%d] == %d wurde zu %d\n&quot;, hoehe, breite, sudokuZiffern[hoehe][breite], moegliche Zif[0] );
</code></pre>
<p>stand und das hat nicht funktioniert...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329976</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Sat, 21 Jul 2007 20:16:53 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sun, 22 Jul 2007 02:41:44 GMT]]></title><description><![CDATA[<p>Also in dem was du gepostet hast ist nichts zu erkennen was dazu führen sollte dass die Werte NICHT übernommen werden.<br />
Der Fehler muss also woanders liegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330049</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 22 Jul 2007 02:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sun, 22 Jul 2007 09:30:46 GMT]]></title><description><![CDATA[<p>also die Methode schreibeDatenInAusgabe()<br />
sieht so aus:</p>
<pre><code class="language-cpp">wiederholen);

   sudokuZiffern[h][b]=ziffer;
  }
 }
}
void Sudoku::schreibeDatenInAusgabe()
{
 BSclear();
 cout	&lt;&lt; &quot;-------------------------\n&quot;;
 for(int b=0;b&lt;BREITE;b++)
 {
	cout &lt;&lt; &quot;| &quot;;
	for(int h=0;h&lt;HOEHE;h++)
   {
	 if(h==2 || h==5 || h==8)
	 {
	  if(sudokuZiffern[b][h]==0) cout &lt;&lt; &quot;  | &quot;;
     else cout &lt;&lt; sudokuZiffern[b][h] &lt;&lt; &quot; | &quot;;
	 }else
		{
		 if(sudokuZiffern[b][h]==0) cout &lt;&lt; &quot;  &quot;;
       else cout &lt;&lt; sudokuZiffern[b][h] &lt;&lt; &quot; &quot;;
		}
   }
   cout &lt;&lt; &quot;\n&quot;;
	if(b==2 || b==5 || b==8) cout	&lt;&lt; &quot;-------------------------\n&quot;;
 }
}
</code></pre>
<p>und die funktion einfacheMethode() sieht so aus:</p>
<pre><code class="language-cpp">bool KI::einfacheMethode(int hoehe,int breite)
{
 vector&lt;unsigned short int&gt; moeglicheZif=moeglicheZiffern(hoehe,breite);
 unsigned short int anzZiffern=moeglicheZif.size();

 cout &lt;&lt; anzZiffern &lt;&lt; &quot; &quot;;
 if(anzZiffern==1)
 {
  sudokuZiffern[hoehe][breite]=moeglicheZif[0];
  return true;	//einfache Methode war möglich
 }
 return false; //einfache methode war nicht möglich
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1330107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330107</guid><dc:creator><![CDATA[Rainu]]></dc:creator><pubDate>Sun, 22 Jul 2007 09:30:46 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sun, 22 Jul 2007 14:01:26 GMT]]></title><description><![CDATA[<p>Wer lesen kann, ist klar im Vorteil. :-&gt;</p>
<p>Rainu schrieb:</p>
<blockquote>
<pre><code class="language-cpp">bool KI::einfacheMethode(int hoehe,int breite)
{
 vector&lt;unsigned short int&gt; moeglicheZif=moeglicheZiffern(hoehe,breite);
</code></pre>
</blockquote>
<p>... und hier unterbrechen wir auch mal.<br />
Erstmal: Breite und Höhe beschreiben hier ja eigentlich x und y und eben nicht Breite und Höhe.<br />
Sourcecodes sind deutlich einfacher zu lesen, wenn da steht, was man tut. Mit schlecht gewählten Variablen verwirrt man die Leute ja nur. Diese Methode dann auch noch &quot;einfacheMethode&quot; zu nennen, ist schon irgendwo zynisch.</p>
<p>Du erzeugst hier einen Vektor, der hoehe mal den Wert von breite beinhaltet. Also bei hoehe=4 und breite 3 sieht der Vektor so aus: { 3, 3, 3, 3 }.<br />
Den Vektor könntest Du Dir im Verlauf des Programms also schenken und einfach</p>
<pre><code class="language-cpp">sudokuZiffern[x][y]=x;
</code></pre>
<p>schreiben, zumal Du eh nur die erste 3 verwendest. Ich gehe also mal davon aus, dass was immer Du hier tust, nicht das ist, was Du tuen wolltest.</p>
<p>In Abhängigkeit der Größe des Vectors, machst Du eine Zuweisung. Bei x=4 und y=3 hat der Vector 4 Elemente.</p>
<pre><code class="language-cpp">if(anzZiffern==1)
</code></pre>
<p>Hier kommst Du nicht vorbei, um überhaupt irgendwas zu setzen.<br />
Deine merkwürdigen Zuweisungen funktionieren also nur, wenn Du in der ersten Reihe (y=1) etwas setzt.</p>
<p>Du kommentierst so schön, dass Du zurückgibst, ob die Funktion erfolgreich war.<br />
Wichtiger als den Rückgabewert zu kommentieren, wäre ihn zu prüfen. Schonmal irgendwo gemacht und das Programm entsprechend reagieren lassen??<br />
Statt jedes Return zu kommentieren, kommentiere mal die Funktion. Lies was sie macht, kommentiere das und überlege Dir dann ob in den Kommentaren das steht, was Du programmieren wolltest. ^^</p>
<p>Und mir erkläre doch mal, was Du da eigentlich programmieren wolltest!?</p>
<p><strong>Edit</strong>: Wo ich schon am meckern bin. In Deiner Signatur steht http:\\blabla. Das Internet ist keine NTFS-formatierte Festplatte und funktioniert zum Glück auch nicht als Windowsfreigabe. ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330236</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Sun, 22 Jul 2007 14:01:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sun, 22 Jul 2007 15:46:16 GMT]]></title><description><![CDATA[<p>OK erstens einfacheMethode deshalb weil ich wie gesagt ein SudokuLösungsProg schreiben will. EinfacheMethode bedeutet &quot;Ist nur eine Ziffer möglich schreibe sie hinein&quot;(wie hätte ich sie den sonnst nennen sollen)</p>
<p>Das mit breite und höhe mag stimmen ich bin auch am überlegen das zu ändern.</p>
<p>Das mit dem Vector:<br />
Also der vector deswegen weil die Methode moeglicheZiffern(hoehe,breite) einen vector zurückgiebt. Diese Methode schreibt ALLE Möglichen ziffern in den vector. Das heißt ich weis noch nicht wie groß der Vektor ist. Deswegen habe ich auch erstaml einen vector gemacht der nur in der Funktion einfacheMethode() genutzt wird. Mit diesem Vector prüf ich ab ob der Vektor EINE Ziffer enthält wenn ja SOLL er diese Ziffer in das entsprechende Feld sudokuZiffern[][] eintragen.(was ja mein Problem ist denn das Funtzt nicht) Wenn der vektor mehr als eine Ziffer enthält soll er nichts machen nur FALSE zurückliefern.</p>
<p>Und ja ich habe das Prog schon mit einer Endlosschleife Probieren lassen die etwa so aussah:</p>
<pre><code class="language-cpp">while(einfacheMethode(x,y))
{
 cout &lt;&lt; &quot;.\n&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1330262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330262</guid><dc:creator><![CDATA[Rainu]]></dc:creator><pubDate>Sun, 22 Jul 2007 15:46:16 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sun, 22 Jul 2007 15:56:44 GMT]]></title><description><![CDATA[<p>OKEY das thema hatt sich erledigt habe nur 2 werte Vertauscht -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330269</guid><dc:creator><![CDATA[Rainu]]></dc:creator><pubDate>Sun, 22 Jul 2007 15:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung und Protectete Werte on Sun, 22 Jul 2007 16:01:55 GMT]]></title><description><![CDATA[<p>Rainu schrieb:</p>
<blockquote>
<p>OK erstens einfacheMethode deshalb weil ich wie gesagt ein SudokuLösungsProg schreiben will. EinfacheMethode bedeutet &quot;Ist nur eine Ziffer möglich schreibe sie hinein&quot;(wie hätte ich sie den sonnst nennen sollen)</p>
</blockquote>
<p>Die Funktion prüft aber nicht, was möglich ist, die Funktion ist eher aufgebaut wie ein Setter.</p>
<p>Rainu schrieb:</p>
<blockquote>
<p>Das mit breite und höhe mag stimmen ich bin auch am überlegen das zu ändern.</p>
</blockquote>
<p>Würde die Funktion prüfen, was möglich wäre, so bräuchtest Du keine Positionen zu übergeben, weil die Methode sie ja selber finden müsste.</p>
<p>Rainu schrieb:</p>
<blockquote>
<p>Das mit dem Vector:<br />
Also der vector deswegen weil die Methode moeglicheZiffern(hoehe,breite) einen vector zurückgiebt.</p>
</blockquote>
<p>??<br />
Die gepostete Methode gibt ein Bool zurück und sonst nix.</p>
<p>Rainu schrieb:</p>
<blockquote>
<p>Diese Methode schreibt ALLE Möglichen ziffern in den vector.</p>
</blockquote>
<p>Nein, nur den Wert, der in Breite steht und danach wird der Vektor wieder zerstört.<br />
Schau Dir mal den Konstruktor an, den Du für den Vector aufrufst.</p>
<p>Rainu schrieb:</p>
<blockquote>
<p>Das heißt ich weis noch nicht wie groß der Vektor ist. Deswegen habe ich auch erstaml einen vector gemacht der nur in der Funktion einfacheMethode() genutzt wird. Mit diesem Vector prüf ich ab ob der Vektor EINE Ziffer enthält wenn ja SOLL er diese Ziffer in das entsprechende Feld sudokuZiffern[][] eintragen.(was ja mein Problem ist denn das Funtzt nicht) Wenn der vektor mehr als eine Ziffer enthält soll er nichts machen nur FALSE zurückliefern.</p>
</blockquote>
<p>Das funzt nicht, weil Du das nicht programmiert hast.<br />
Was Du programmiert hast, hat überhaupt nichts mit Deiner hier stehenden Beschreibung zu tun.</p>
<p>Mach's doch umgekehrt. Schreibe die Kommentare und dazwischen der Code, der tut, was Du zuvor kommentiert hast.<br />
Versuche aber wenigstens vorher nachzuvollziehen, was Du da eigentlich programmiert hast.</p>
<p>Rainu schrieb:</p>
<blockquote>
<p>Und ja ich habe das Prog schon mit einer Endlosschleife Probieren lassen die etwa so aussah:</p>
<pre><code class="language-cpp">while(einfacheMethode(x,y))
{
 cout &lt;&lt; &quot;.\n&quot;;
}
</code></pre>
</blockquote>
<p>Ich hoffe, es sah nicht genauso aus, denn da wird in der Regel nicht viel passieren und wenn's dann dochmal klappt, wäre ein &quot;if( einfacheMethode( x, y ) ) cout &lt;&lt; &quot;Hat geklappt&quot;;&quot; vielleicht praktischer.</p>
<p>Wozu eine Endlosschleife für immer die gleiche Abfrage?</p>
<pre><code class="language-cpp">while( y == 1 )
{
 cout &lt;&lt; &quot;.\n&quot;;
}
</code></pre>
<p>wäre kürzer und - abgesehen davon, dass eine Speicherstelle laufend mit x maltretiert wird - gleichwertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330272</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Sun, 22 Jul 2007 16:01:55 GMT</pubDate></item></channel></rss>