Program crash'uje

0
//-------------------------------------game.h-------------------------------------
#include <string>
using namespace std;
class CPlayer;
class CGame;
enum SIGN { SGN_CIRCLE = 'O', 
			SGN_CROSS = 'X' };

class CPlayer{
private:
	string m_Player1;
	string m_Player2;
	
public:
	/*konstruktor*/
	CPlayer()
	{m_Player1=m_Player2= "???";}

	/*----------------metody----------------*/
	char Losowanie();
	void Wczytaj();
	void Pokaz();
	/*-------dostęp do prywatych pól---------*/
	string Gracz () const { return m_Player1;}
	string Gracz2 () const { return m_Player2;}
};

class CGame{
private:
	CPlayer* m_pCP;
public:

	/*-------dostęp do prywatych pól---------*/
	
	CPlayer* Gracz() const {return m_pCP;}
};

//-------------------------------------game.cpp-------------------------------------
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
#include "game.h"
using namespace std;
//class CPlayer 
void CPlayer::Wczytaj()
{
	cout << "Podaj nazwe Gracza nr.1: ";
	getline(cin,m_Player1);//wczytywanie
	cout << "Podaj nazwe Gracza nr.2: ";
	getline(cin,m_Player2);//wczytuwanie
}
void CPlayer::Pokaz()
{
	CPlayer* Los;//zmienna przechowująca znak dla gracza1
	CPlayer* Los2;//zmienna przechowująca znak dla gracza2
	Los=new CPlayer;
	Los2=new CPlayer;
	cout <<  m_Player1 << " - " << Los->Losowanie()<<endl;//podazanie jaki znak otrzyumuje gracz nr1
	cout << m_Player2 << " - " << Los2->Losowanie()<<endl;//podazanie jaki znak otrzyumuje gracz nr2
}
char CPlayer::Losowanie()
{
	 SIGN Znak; //zmienna przechowująca wylosowany znak
	 static_cast<char>(Znak = (rand() % 2 == 0 ? SGN_CIRCLE : SGN_CROSS));//losuje znak dla graczy
	 return Znak;
}

//-------------------------------------main.cpp-------------------------------------
#include <ctime>
#include "game.h"
#include <cstdlib>
int main ()
{
	srand(static_cast<unsigned>(time(NULL)));
	CGame* Gra;
	Gra=new CGame;
	Gra->Gracz()->Wczytaj();
	Gra->Gracz()->Losowanie();
	Gra->Gracz()->Pokaz();
	system("pause");
	return 0;
}

Proszę o jakąś podpowiedź w rozwiązaniu problemu.:)

0

Albo mam deja vi albo to pytanie już było. Dokładnie ten sam kod, dokładnie ta sama składowa CPlayer* m_pCP;
nie jest nigdzie przydzielana.

0

Ten kod to jest jakaś masakra. Wiesz ze C++ nie ma zarządzanej sterty? Że każde "new" powinno być sparowane z delete?
Co do pytania z posta: uruchom pod debugerem i przejdź program krok po kroku.

0

po pierwsze zrob dla klasy cGame konstruktor ktory operatorem new zarezerwuje dla pola znajdujacego sie w klasie po drugie niewiem po co te rzutowanie przy "srand" mozesz napisac po prostu srand(time(NULL))

1 użytkowników online, w tym zalogowanych: 0, gości: 1