<?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[Black Jack Vector out of range]]></title><description><![CDATA[<p>Hallo!</p>
<p>Als Projekt für die Schule soll ich das Kartenspiel Black Jack programmieren.<br />
Kurz vorm Ende bin ich auf ein Problem gestossen.<br />
Hier ist erstmal der code (hoffe das reicht, will meinen ganzen code nicht public machen)</p>
<pre><code>//main.cpp
#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &lt;time.h&gt;
#include &lt;string&gt;
#include &lt;windows.h&gt;
#include &lt;vector&gt;
#include &quot;class.h&quot;
using namespace std;

void main(){
	bool wahl_eingabe;
	Tisch Spieltisch;
	bjheader2();
	//init_k_s();
	while (Spieltisch.Spieler1.Guthaben&gt;0){
	int letzte_karte_sp1=0;
	int letzte_karte_bk=0;
	bjheader2();
	Spieltisch.Bank.Handsumme=0;
	Spieltisch.Spieler1.Handsumme=0;
	Spieltisch.ers_misch();
	Spieltisch.bieten();
	Spieltisch.erster_zug();
	bjheader2();
	Spieltisch.ausg();
	cout&lt;&lt;&quot;Moechten Sie eine weitere Karte ziehen? Nein(0) Ja(1)&quot;&lt;&lt;endl;
	cin&gt;&gt;wahl_eingabe;
	Spieltisch.wahl=wahl_eingabe;
	Spieltisch.zug=2;
	while(Spieltisch.wahl!=0){
		Spieltisch.zug++;
		Spieltisch.sp1_karte();
		Spieltisch.Spieler1.Handsumme=Spieltisch.Spieler1.Handsumme + Spieltisch.Spieler1.Stapel[Spieltisch.Spieler1.Stapel.size() -1].Wert;
		bjheader2();
		Spieltisch.ausg_sp1(Spieltisch.zug);
		cout&lt;&lt;&quot;Moechten Sie eine weitere Karte ziehen? (Ja/Nein)&quot;&lt;&lt;endl;
		cin&gt;&gt;wahl_eingabe;
		Spieltisch.wahl=wahl_eingabe;
		}
	Spieltisch.Bank.Handsumme=Spieltisch.Bank.Handsumme + Spieltisch.Bank.Stapel[1].Wert;
	bjheader2();
	Spieltisch.ausg_bk(Spieltisch.zug, Spieltisch.zug_bk);
	cout&lt;&lt;&quot;Die Bank ist nun an der Reihe!Bitte Warten!(wenn Bank Handsumme groesser als 16 ist Return druecken)&quot;&lt;&lt;endl;
	Sleep(2000);
	Spieltisch.zug_bk=2;
	while (Spieltisch.Bank.Handsumme&lt;17){
		Spieltisch.zug_bk++;
		Spieltisch.bk_karte();
		Spieltisch.Bank.Handsumme=Spieltisch.Bank.Handsumme + Spieltisch.Bank.Stapel[Spieltisch.Bank.Stapel.size() -1].Wert;
		bjheader2();
		Spieltisch.ausg_bk(Spieltisch.zug, Spieltisch.zug_bk);
		Sleep(1500);
	}
	_getch();
	if (Spieltisch.Spieler1.Guthaben==0){
		cout&lt;&lt;&quot;Sie sind Pleite. Kommen Sie wieder wenn Sie mehr Geld haben.&quot;;
		break;
	}
	Spieltisch.loeschen();
	bjheader2();
	init_k();
	}
	_getch();
}
</code></pre>
<pre><code>//class.h
enum Symbole {Herz, Kreuz, Pik, Karo};
enum BJ {Ja, Nein};
char intToChar(int integer){return (char)integer+48;};
struct K_Hilfe{
	int Wert;
	char Zeichen;
	Symbole Symbol_h;
};
class Karten{
public:
	int Wert;
	char Zeichen;
	Symbole Symbol;
	Karten();
	Karten(int a, char b, Symbole c){
		Wert = a;
		Zeichen = b;
		Symbol = c;
	}
};

class Spieler{
public:
	string Name;
	vector&lt;Karten&gt;Stapel;
	int Guthaben,Handsumme; 
	BJ BlackJack;
	Spieler(){};
};

class Tisch{
public:
	vector&lt;Karten&gt;Kartenstapel;
	Spieler Bank;
	Spieler Spieler1;
	bool wahl;
	char vg, ausg_symbol; //vorzeitiger gewinn (BJ, überkauft,...)
	int Gebot, zug, zug_bk; //zug = Anzahl der gezogenen Karten von Spieler1 (wichtig für Ausgabe)
	//zug_bk = Anzahl der gezogenen Karten von Bank (wichtig für Ausgabe)
	string spname;
	Tisch(){
		bjheader1();
		Bank.Name=&quot;Bank&quot;;
		cout&lt;&lt;endl&lt;&lt;&quot;Bitte geben Sie ihren Namen ein: &quot;;
		cin&gt;&gt;spname;
		Spieler1.Name=spname;
		Spieler1.Guthaben=500;
		Bank.Guthaben=500;
		zug=2;
		zug_bk=2;
	}
	//karten erstellen +  mischen
	void ers_misch();
	//bieten
	void bieten();
	//Spieler1 zieht eine Karte
	void sp1_karte();
	//Bank zieht eine Karte
	void bk_karte();
	//Bank zieht 2 Karten || Spieler1 zieht 2 Karten
	void erster_zug();
	//Bank 1 Karte ausgabe || Spieler1 2 Karten ausgabe
	void ausg();
	//2. Zug von Spieler1
	void zweiter_zug_sp1();
	//Ausgabe nur für Spieler1
	void ausg_sp1(int l);
	//Ausgabe für Spieler1 komplett und Bank
	void ausg_bk (int m, int n);
	//alle Karten löschen
	void loeschen();
};
void Tisch::ausg_sp1(int l){
	//Spieler1
	cout&lt;&lt;Spieler1.Name&lt;&lt;&quot;:&quot;&lt;&lt;endl;
	cout&lt;&lt;endl;
	cout&lt;&lt;endl&lt;&lt;&quot;Handsumme:  &quot;&lt;&lt;Spieler1.Handsumme&lt;&lt;endl&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot;| &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;   &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		if(Spieler1.Stapel[i].Symbol==0){ausg_symbol=char(3);}
		else if(Spieler1.Stapel[i].Symbol==1){ausg_symbol=char(5);}
		else if(Spieler1.Stapel[i].Symbol==2){ausg_symbol=char(6);}
		else if(Spieler1.Stapel[i].Symbol==3){ausg_symbol=char(4);}
		cout&lt;&lt;&quot;|   &quot;&lt;&lt;ausg_symbol&lt;&lt;&quot;  |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot;| &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;   &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;&quot;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n\n&quot;;
	//Bank
	cout&lt;&lt;&quot;Bank:&quot;&lt;&lt;endl;
	cout&lt;&lt;endl;
	cout&lt;&lt;endl&lt;&lt;&quot;Handsumme:  &quot;&lt;&lt;Bank.Handsumme&lt;&lt;endl&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot; ------      -------&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;    &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;|    |*******|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot;|      |    |** B **|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		if(Bank.Stapel[i].Symbol==0){ausg_symbol=char(3);}
		else if(Bank.Stapel[i].Symbol==1){ausg_symbol=char(5);}
		else if(Bank.Stapel[i].Symbol==2){ausg_symbol=char(6);}
		else if(Bank.Stapel[i].Symbol==3){ausg_symbol=char(4);}
		cout&lt;&lt;&quot;|   &quot;&lt;&lt;ausg_symbol&lt;&lt;&quot;  |    |*******|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot;|      |    |** J **|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;    &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;|    |*******|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot; ------      -------&quot;;
	}
	cout&lt;&lt;endl;
}

/*************************************************************************************************************
*************************************************************************************************************/
void Tisch::ausg_bk(int m, int n){
	//Spieler1
	cout&lt;&lt;Spieler1.Name&lt;&lt;&quot;:&quot;&lt;&lt;endl;
	cout&lt;&lt;endl;
	cout&lt;&lt;endl&lt;&lt;&quot;Handsumme:  &quot;&lt;&lt;Spieler1.Handsumme&lt;&lt;endl&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot;| &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;   &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		if(Spieler1.Stapel[i].Symbol==0){ausg_symbol=char(3);}
		else if(Spieler1.Stapel[i].Symbol==1){ausg_symbol=char(5);}
		else if(Spieler1.Stapel[i].Symbol==2){ausg_symbol=char(6);}
		else if(Spieler1.Stapel[i].Symbol==3){ausg_symbol=char(4);}
		cout&lt;&lt;&quot;|   &quot;&lt;&lt;ausg_symbol&lt;&lt;&quot;  |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot;| &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;   &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;&quot;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n\n&quot;;
	//Bank
	cout&lt;&lt;&quot;Bank:&quot;&lt;&lt;endl;
	cout&lt;&lt;endl;
	cout&lt;&lt;endl&lt;&lt;&quot;Handsumme:  &quot;&lt;&lt;Bank.Handsumme&lt;&lt;endl&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;    &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		if(Bank.Stapel[i].Symbol==0){ausg_symbol=char(3);}
		else if(Bank.Stapel[i].Symbol==1){ausg_symbol=char(5);}
		else if(Bank.Stapel[i].Symbol==2){ausg_symbol=char(6);}
		else if(Bank.Stapel[i].Symbol==3){ausg_symbol=char(4);}
		cout&lt;&lt;&quot;|   &quot;&lt;&lt;ausg_symbol&lt;&lt;&quot;  |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;    &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
	cout&lt;&lt;endl;
}

void Tisch::loeschen(){
	do{Bank.Stapel.pop_back();}while(Bank.Stapel.size()!=0);
	do{Spieler1.Stapel.pop_back();}while(Spieler1.Stapel.size()!=0);
	do{Kartenstapel.pop_back();}while(Kartenstapel.size()!=0);
}
</code></pre>
<p>In der ersten Runde läuft alles wunderbar.<br />
Und dann, in einer der folgenden Runden (wechselt immer oO) kommt die Meldung<br />
vector substitiute out of range. Beim Debuggen hab ich festgestellt, das der Fehler in der class.h in Zeile 197 kommt<br />
(cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot; &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;| &quot;;).</p>
<p>Schonmal Danke und sagt bescheid wenn ich noch mehr vom Quellcode braucht.</p>
<p>yedion</p>
<p>Achja, ich benutze Visual Studio 2005 und habe Windows Vista, falls das noch wichtig ist</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233940/black-jack-vector-out-of-range</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 15:06:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233940.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Feb 2009 07:45:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Black Jack Vector out of range on Wed, 11 Feb 2009 07:45:25 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Als Projekt für die Schule soll ich das Kartenspiel Black Jack programmieren.<br />
Kurz vorm Ende bin ich auf ein Problem gestossen.<br />
Hier ist erstmal der code (hoffe das reicht, will meinen ganzen code nicht public machen)</p>
<pre><code>//main.cpp
#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &lt;time.h&gt;
#include &lt;string&gt;
#include &lt;windows.h&gt;
#include &lt;vector&gt;
#include &quot;class.h&quot;
using namespace std;

void main(){
	bool wahl_eingabe;
	Tisch Spieltisch;
	bjheader2();
	//init_k_s();
	while (Spieltisch.Spieler1.Guthaben&gt;0){
	int letzte_karte_sp1=0;
	int letzte_karte_bk=0;
	bjheader2();
	Spieltisch.Bank.Handsumme=0;
	Spieltisch.Spieler1.Handsumme=0;
	Spieltisch.ers_misch();
	Spieltisch.bieten();
	Spieltisch.erster_zug();
	bjheader2();
	Spieltisch.ausg();
	cout&lt;&lt;&quot;Moechten Sie eine weitere Karte ziehen? Nein(0) Ja(1)&quot;&lt;&lt;endl;
	cin&gt;&gt;wahl_eingabe;
	Spieltisch.wahl=wahl_eingabe;
	Spieltisch.zug=2;
	while(Spieltisch.wahl!=0){
		Spieltisch.zug++;
		Spieltisch.sp1_karte();
		Spieltisch.Spieler1.Handsumme=Spieltisch.Spieler1.Handsumme + Spieltisch.Spieler1.Stapel[Spieltisch.Spieler1.Stapel.size() -1].Wert;
		bjheader2();
		Spieltisch.ausg_sp1(Spieltisch.zug);
		cout&lt;&lt;&quot;Moechten Sie eine weitere Karte ziehen? (Ja/Nein)&quot;&lt;&lt;endl;
		cin&gt;&gt;wahl_eingabe;
		Spieltisch.wahl=wahl_eingabe;
		}
	Spieltisch.Bank.Handsumme=Spieltisch.Bank.Handsumme + Spieltisch.Bank.Stapel[1].Wert;
	bjheader2();
	Spieltisch.ausg_bk(Spieltisch.zug, Spieltisch.zug_bk);
	cout&lt;&lt;&quot;Die Bank ist nun an der Reihe!Bitte Warten!(wenn Bank Handsumme groesser als 16 ist Return druecken)&quot;&lt;&lt;endl;
	Sleep(2000);
	Spieltisch.zug_bk=2;
	while (Spieltisch.Bank.Handsumme&lt;17){
		Spieltisch.zug_bk++;
		Spieltisch.bk_karte();
		Spieltisch.Bank.Handsumme=Spieltisch.Bank.Handsumme + Spieltisch.Bank.Stapel[Spieltisch.Bank.Stapel.size() -1].Wert;
		bjheader2();
		Spieltisch.ausg_bk(Spieltisch.zug, Spieltisch.zug_bk);
		Sleep(1500);
	}
	_getch();
	if (Spieltisch.Spieler1.Guthaben==0){
		cout&lt;&lt;&quot;Sie sind Pleite. Kommen Sie wieder wenn Sie mehr Geld haben.&quot;;
		break;
	}
	Spieltisch.loeschen();
	bjheader2();
	init_k();
	}
	_getch();
}
</code></pre>
<pre><code>//class.h
enum Symbole {Herz, Kreuz, Pik, Karo};
enum BJ {Ja, Nein};
char intToChar(int integer){return (char)integer+48;};
struct K_Hilfe{
	int Wert;
	char Zeichen;
	Symbole Symbol_h;
};
class Karten{
public:
	int Wert;
	char Zeichen;
	Symbole Symbol;
	Karten();
	Karten(int a, char b, Symbole c){
		Wert = a;
		Zeichen = b;
		Symbol = c;
	}
};

class Spieler{
public:
	string Name;
	vector&lt;Karten&gt;Stapel;
	int Guthaben,Handsumme; 
	BJ BlackJack;
	Spieler(){};
};

class Tisch{
public:
	vector&lt;Karten&gt;Kartenstapel;
	Spieler Bank;
	Spieler Spieler1;
	bool wahl;
	char vg, ausg_symbol; //vorzeitiger gewinn (BJ, überkauft,...)
	int Gebot, zug, zug_bk; //zug = Anzahl der gezogenen Karten von Spieler1 (wichtig für Ausgabe)
	//zug_bk = Anzahl der gezogenen Karten von Bank (wichtig für Ausgabe)
	string spname;
	Tisch(){
		bjheader1();
		Bank.Name=&quot;Bank&quot;;
		cout&lt;&lt;endl&lt;&lt;&quot;Bitte geben Sie ihren Namen ein: &quot;;
		cin&gt;&gt;spname;
		Spieler1.Name=spname;
		Spieler1.Guthaben=500;
		Bank.Guthaben=500;
		zug=2;
		zug_bk=2;
	}
	//karten erstellen +  mischen
	void ers_misch();
	//bieten
	void bieten();
	//Spieler1 zieht eine Karte
	void sp1_karte();
	//Bank zieht eine Karte
	void bk_karte();
	//Bank zieht 2 Karten || Spieler1 zieht 2 Karten
	void erster_zug();
	//Bank 1 Karte ausgabe || Spieler1 2 Karten ausgabe
	void ausg();
	//2. Zug von Spieler1
	void zweiter_zug_sp1();
	//Ausgabe nur für Spieler1
	void ausg_sp1(int l);
	//Ausgabe für Spieler1 komplett und Bank
	void ausg_bk (int m, int n);
	//alle Karten löschen
	void loeschen();
};
void Tisch::ausg_sp1(int l){
	//Spieler1
	cout&lt;&lt;Spieler1.Name&lt;&lt;&quot;:&quot;&lt;&lt;endl;
	cout&lt;&lt;endl;
	cout&lt;&lt;endl&lt;&lt;&quot;Handsumme:  &quot;&lt;&lt;Spieler1.Handsumme&lt;&lt;endl&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot;| &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;   &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		if(Spieler1.Stapel[i].Symbol==0){ausg_symbol=char(3);}
		else if(Spieler1.Stapel[i].Symbol==1){ausg_symbol=char(5);}
		else if(Spieler1.Stapel[i].Symbol==2){ausg_symbol=char(6);}
		else if(Spieler1.Stapel[i].Symbol==3){ausg_symbol=char(4);}
		cout&lt;&lt;&quot;|   &quot;&lt;&lt;ausg_symbol&lt;&lt;&quot;  |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot;| &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;   &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;l; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;&quot;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n\n&quot;;
	//Bank
	cout&lt;&lt;&quot;Bank:&quot;&lt;&lt;endl;
	cout&lt;&lt;endl;
	cout&lt;&lt;endl&lt;&lt;&quot;Handsumme:  &quot;&lt;&lt;Bank.Handsumme&lt;&lt;endl&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot; ------      -------&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;    &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;|    |*******|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot;|      |    |** B **|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		if(Bank.Stapel[i].Symbol==0){ausg_symbol=char(3);}
		else if(Bank.Stapel[i].Symbol==1){ausg_symbol=char(5);}
		else if(Bank.Stapel[i].Symbol==2){ausg_symbol=char(6);}
		else if(Bank.Stapel[i].Symbol==3){ausg_symbol=char(4);}
		cout&lt;&lt;&quot;|   &quot;&lt;&lt;ausg_symbol&lt;&lt;&quot;  |    |*******|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot;|      |    |** J **|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;    &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;|    |*******|&quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;1; i++){
		cout&lt;&lt;&quot; ------      -------&quot;;
	}
	cout&lt;&lt;endl;
}

/*************************************************************************************************************
*************************************************************************************************************/
void Tisch::ausg_bk(int m, int n){
	//Spieler1
	cout&lt;&lt;Spieler1.Name&lt;&lt;&quot;:&quot;&lt;&lt;endl;
	cout&lt;&lt;endl;
	cout&lt;&lt;endl&lt;&lt;&quot;Handsumme:  &quot;&lt;&lt;Spieler1.Handsumme&lt;&lt;endl&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot;| &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;   &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		if(Spieler1.Stapel[i].Symbol==0){ausg_symbol=char(3);}
		else if(Spieler1.Stapel[i].Symbol==1){ausg_symbol=char(5);}
		else if(Spieler1.Stapel[i].Symbol==2){ausg_symbol=char(6);}
		else if(Spieler1.Stapel[i].Symbol==3){ausg_symbol=char(4);}
		cout&lt;&lt;&quot;|   &quot;&lt;&lt;ausg_symbol&lt;&lt;&quot;  |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot;| &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;   &quot;&lt;&lt;Spieler1.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;m; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;&quot;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n\n&quot;;
	//Bank
	cout&lt;&lt;&quot;Bank:&quot;&lt;&lt;endl;
	cout&lt;&lt;endl;
	cout&lt;&lt;endl&lt;&lt;&quot;Handsumme:  &quot;&lt;&lt;Bank.Handsumme&lt;&lt;endl&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;    &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		if(Bank.Stapel[i].Symbol==0){ausg_symbol=char(3);}
		else if(Bank.Stapel[i].Symbol==1){ausg_symbol=char(5);}
		else if(Bank.Stapel[i].Symbol==2){ausg_symbol=char(6);}
		else if(Bank.Stapel[i].Symbol==3){ausg_symbol=char(4);}
		cout&lt;&lt;&quot;|   &quot;&lt;&lt;ausg_symbol&lt;&lt;&quot;  |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot;|      |    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;    &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;|    &quot;;
	}
	cout&lt;&lt;endl;
	for (int i=0; i&lt;n; i++){
		cout&lt;&lt;&quot; ------     &quot;;
	}
	cout&lt;&lt;endl;
}

void Tisch::loeschen(){
	do{Bank.Stapel.pop_back();}while(Bank.Stapel.size()!=0);
	do{Spieler1.Stapel.pop_back();}while(Spieler1.Stapel.size()!=0);
	do{Kartenstapel.pop_back();}while(Kartenstapel.size()!=0);
}
</code></pre>
<p>In der ersten Runde läuft alles wunderbar.<br />
Und dann, in einer der folgenden Runden (wechselt immer oO) kommt die Meldung<br />
vector substitiute out of range. Beim Debuggen hab ich festgestellt, das der Fehler in der class.h in Zeile 197 kommt<br />
(cout&lt;&lt;&quot;|&quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot; &quot;&lt;&lt;Bank.Stapel[i].Zeichen&lt;&lt;&quot;| &quot;;).</p>
<p>Schonmal Danke und sagt bescheid wenn ich noch mehr vom Quellcode braucht.</p>
<p>yedion</p>
<p>Achja, ich benutze Visual Studio 2005 und habe Windows Vista, falls das noch wichtig ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661521</guid><dc:creator><![CDATA[Yedion]]></dc:creator><pubDate>Wed, 11 Feb 2009 07:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to Black Jack Vector out of range on Wed, 11 Feb 2009 07:55:00 GMT]]></title><description><![CDATA[<p>Leider kann man nicht sehen, wieviele Karten du in Bank.Stapel überhaupt hineingesteckt hast. Offensichtlich sind aber weniger drin als du glaubst.</p>
<p>Drollig ist auch, dass du bei ausg_bk dem Tisch seine eigenen Member übergibst.<br />
Irgendwelche Funktionen ändern fröhlich die Member irgendwelcher Objekte, Kapselung ist nicht vorhanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661524</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 11 Feb 2009 07:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to Black Jack Vector out of range on Wed, 11 Feb 2009 08:04:25 GMT]]></title><description><![CDATA[<p>Zusätzlich, solltest du dir merken, den Code auf wirklich Relevante Stellen zu kürzen, nämlich da wo du meinst der Fehler, Fehlverhalten findet statt.<br />
Weil ich lese mir den Code bestimmt nicht durch, und da bin ich nicht der einzige.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661530</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 11 Feb 2009 08:04:25 GMT</pubDate></item><item><title><![CDATA[Reply to Black Jack Vector out of range on Wed, 11 Feb 2009 08:33:05 GMT]]></title><description><![CDATA[<p>Das mit dem vielen Quelltext hat den Vorteil, das<br />
man schon mal einen groben Eindruck vom Programmstil<br />
bekommt. Man muss ja nicht jede Zeile lesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Aber kann im Zweifel in anderen Zeilen nachsehen.</p>
<p>Er hat ja geschrieben, das er den Fehler bei Zeile 197<br />
vermutet.</p>
<p>Erzählt mir mal als C++ Nix-Ahnung:<br />
Sollte das, was bei ihm in class.h steht, nicht auf<br />
mehrere Dateien im Projekt verteilt werden?</p>
<p>Und, wenn ich folgendes sehe:</p>
<pre><code class="language-cpp">void Tisch::ausg_sp1(int l){
    //Spieler1
</code></pre>
<p>muss ich automatisch an Redundanzen denken oder <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>Aber je nach dem für welche Schule, ist das eventuell gar nicht<br />
relevant.</p>
<p>MfG f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661541</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Wed, 11 Feb 2009 08:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to Black Jack Vector out of range on Wed, 11 Feb 2009 08:56:28 GMT]]></title><description><![CDATA[<p>f.-th. schrieb:</p>
<blockquote>
<p>Das mit dem vielen Quelltext hat den Vorteil, das man schon mal einen groben Eindruck vom Programmstil bekommt. Man muss ja nicht jede Zeile lesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Zu lange Ausschnitte schrecken ab, und helfen auch nicht weiter (Wenn danach gefragt wird kann man es immer noch nachreichen).</p>
<p>Davon abgesehen: Bitte lass das Forum deinen Text umbrechen, und mach dies nicht manuell.</p>
<p>f.-th. schrieb:</p>
<blockquote>
<p>Erzählt mir mal als C++ Nix-Ahnung:<br />
Sollte das, was bei ihm in class.h steht, nicht auf mehrere Dateien im Projekt verteilt werden?</p>
</blockquote>
<p>Üblicherweise trennt man den Code in eine Header-/Sourcedatei pro Klasse. In manchen Fällen (bei recht kurzen Code, oder wenn Klassen direkt zusammen gehören [hier bietet sich dann aber eine innere Klasse an] trennt man häufig nicht).</p>
<p>Yedion schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>1. Verwende für C oder C++ Code bitte statt den code-Tags die cpp-Tags (Wegen Syntaxhervorhebung).</p>
<p>2. &quot;void main&quot; gibt und gab es auch noch nie in C++. &quot;int main&quot; ist Standardkonform [int main gibt explizit 0 zurück wenn kein anderer Returnwert angegeben wird].</p>
<p>3. In C++ ist es üblich das man Variablen dann deklariert wenn man sie verwendet, und möglichst auch im gleichen Schritt initialisiert.</p>
<p>4. Wenn du Hilfe erwartest solltes du Code so schreiben, das andere ihn lesen können.<br />
a) Man kann auch Code leserlich ausschreiben. Abkürzungen sind kontraproduktiv.<br />
b) Verwende einheitliche Einrückstile.<br />
c) Für Zeilen wie &quot;do{Bank.Stapel.pop_back();}while(Bank.Stapel.size()!=0);&quot; sollte man dir Notenabzug geben. Die Returntaste ist dazu da damit man sie auch einsetzt, zumal es sauber umgebrochen auch deutlich lesbarer wird.</p>
<p>5. Ich bezweifel das der Code überhaupt laufen kann, es sei den du hast im Header auch includes.<br />
a) Tu dir selbst ein gefallen, und verwendet &quot;using namespace&quot; nicht in Headern.<br />
b) Man trennt Header/Source aus guten Grund in C++. Die Implementierung gehört daher in eine cpp.<br />
c) Zudem ist es üblich pro Klasse einen eigenen Header und eine eigene Sourcedatei zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661548</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 11 Feb 2009 08:56:28 GMT</pubDate></item></channel></rss>